2019-02-20

`ping`の代わりに`Test-Connection`を使う

PowerShellにはTest-Connectionというやつがあるのを今更ながら知った。

今の仕事では、仮想マシン(dockerでない)を複数立ち上げて作業することが常になってるのだが、結構立ち上げ忘れてたりしてうっかりSSHしたときに繋げないのである😢

疎通確認と合わせてSSHするすべを探してたところ、これを知ったので以下のようなスクリプトを作ってCmderのTaskに登録して使っている。

$waken = Test-Connection -TargetName $ip -Count 1 -Quiet
if (!$waken) {
Write-Output "target not found. please start up $ip"
$Host.UI.RawUI.ReadKey() | Out-Null
exit
}
ssh "admin@$ip"

Test-Connectionが遅い理由と対策方法について - しばたテックブログ

↑このような話もあるようなので目を通しておきたいところ🤔

おまけ

PowerShellでPause - Qiita

最近のPowerShellにはPauseなるもんがデフォで入ってるが、古来からの方法でEnter以外のキーでも使えるようにしておくのが良いであらうか?

Write-Output "type key to continue..."
$Host.UI.RawUI.ReadKey() | Out-Null

スクリプトの中でコレを呼んだら、なんかのキーを押すまで止まる。

戻り値が標準出力されないようにするためにOut-Nullにパイプラインする。$nullに代入でもよいが。

余談

この記事をしたためておるときにlein ring serverでエラーが出るようになってたのを解消したので、メモがてら次回に記す。