TeraTermマクロでsudoのパスワードのキャッシュがある場合とない場合の制御

TeraTermマクロ書いてたらsshで初回ログインする時に

Are you sure you want to continue connecting (yes/no)?

って聞かれて、メンドイのぅ、と思ってたら↓のブログのように、 sshで初回ログイン時に「Are you sure you want to continue connecting (yes/no)? 」を抑止する方法 | alog .sshのコンフィグにStrictにHostをチェックしないぜ的な設定が↓のように出来ます、と。

$ vi ~/.ssh/config
host *
    StrictHostKeyChecking no

  そこから進めていくと、今度はsudoのパスワードがキャッシュされている場合とされてない場合に 対応しなければならないことが分かりました。 #制御入れてやらないと、ずっと待ち続けてしまったり、想定通りのプロンプトが帰ってこなかったり。   ググってくと、 ・sudoコマンド叩く時に『-k』ってオプションを付ければ良いとか、 ・/etc/sudoersに『Defaults timestamp_timeout = 0』って入れれば毎回きいてくるってのが出てきたのですが、 そういう権限持ち合わせておりませぬ、、っていう。   TeraTermマクロでなんとかしなきゃいけないわけなのですが、 既存のはwaitしてプロンプト見はって、sendlnでコマンドを突っ込む感じです、と。   ググってみるとwaitにはtimeoutの設定が出来て戻り値がxxだったらーみたいな制御が出来そうです。 って事で↓こんなんしてみました。

timeout = 1
wait 'password:'
if result = 1 then
  sendln Password ※ ファイルから取得したヤツ
endif

wait '$'
sendln 'id'

  制御構文のページみてたら、自分らの世代にはあまり馴染みのないgotoっていうのもあります、と。 ↓こんな風にラベル付けて飛ばしてやることが出来るんですね。

timeout = 1
wait 'password:'
if result = 0 goto sudo_password_cached
sendln Password

:sudo_password_cached
wait '$'
sendln 'id'

  にしても、サーバによってプロンプトがチョコチョコ違ったりするので、 差分をガッツリ吸収するのは面倒臭そうだなぁ。。 ループ回してサーバ毎にタブをバンバン開いたりとかもしたいし。   Ubuntuのターミナル→PoderosaTeraTermと、似たような事やってきましたが、 イザって時にサクっと立ち上がって、しかも軽いMacBook Airみたいなヤツで こういうのガッツリやれるようになったらアツいなぁと思ったりします。

 

VMware徹底入門 第2版
VMware徹底入門 第2版
posted with amazlet at 12.03.01
ヴイエムウェア株式会社
翔泳社
売り上げランキング: 11670