私のパソコンでは起動時にVBoxManage.exe startvm hogehoge --type headless
というカンジでバッチで流して起動している。
このあとにputtyやらAptanaを起動しているのだが、VMが完全に立ち上げる前に起動してしまうので困っていた。
sleep処理で待っても良いのだが、どうもスマートじゃない。
そこでsftpコマンドを利用して下記を書いてみたら、上手く待ってくれるようになった。
sftp -oPort=<ポート番号> -oConnectionAttempts=120 -b "./bye.bat" <ユーザ名>@<アドレス>
bye
これは、sftpコマンドを120回試して、うまく繋がったらbye.batを流すというコマンドになっている。-o
でssh_configの設定が出来ることを利用してみた。
ConnectionAttemptsは接続を試みる回数を指定している。一回一秒なので、120秒=2分である。2分試して上手くいかなければエラーということで。
bye.batは何の処理も必要ないので、すぐ接続を切るようにbye
のみである。
これはWindows環境でやっているが、ロジック的にはMac・Linuxでも問題ないはずだ。
というかWindowsでやるにはコマンドからsftpを打てるようにする必要がある!
参考までに、私が普段起動しているバッチを載せておきます。
rem VM起動
"<PATH>\VBoxManage.exe" startvm "<VM名>" --type headless
sftp -oPort=<ポート番号> -oConnectionAttempts=120 -b "./bye.bat" <ユーザ名>@<アドレス>
rem Aptana起動
start <PATH>\AptanaStudio3.exe
rem Chrome起動
start <PATH>\chrome.exe --new-window http://XXXX http://YYYY http://ZZZZ
rem putty起動
<PATH>\PUTTY.EXE -load <設定名> -l <ユーザ名> -pw <パスワード>
参考:
http://webkaru.net/linux/sftp-command/
http://www.yosbits.com/opensonar/rest/man/freebsd/man/ja/man5/ssh_config.5.html