recvln
について
recvln
1つではエコーバックの分を受け取ってしまうようです。
他の出力を受信してしまう場合もあります。
確実にやるなら、目印を付けてwaitln
でそこまで待つ、というのがいい思います
; 待機用文字列「wait:」を入れて改行してやる
sendln "ll | grep admin | sed -n 's/.*sudo\(.*admin\).*/wait:\n\1/p'"
; エコーを読み捨てる
recvln
; 待機用文字列を待つ
waitln 'wait:'
; 本命の文字列を読み取る
recvln
VER = inputstr
sendln 'echo ' VER
messagebox inputstr 'title'
# コマンド
ll | grep admin | sed -n 's/.*sudo\(.*admin\).*/wait:\n\1/p'
# 実行結果
wait:
_as_admin
ウィンドウを閉じて新しいウィンドウを開くマクロ
USER = 'user'
PASSWORD = 'password'
HOST = 'host'
sprintf2 ver '%s:22 /ssh /auth=password /user=%s /passwd=%s' HOST USER PASSWORD
connect ver
wait "$ "
; 処理
; ウィドウを閉じる、マクロは非リンク状態になる
closett
; 新しいウィンドウが開く
USER = 'user'
PASSWORD = 'password'
HOST = 'host'
sprintf2 ver '%s:22 /ssh /auth=password /user=%s /passwd=%s' HOST USER PASSWORD
connect ver
参考