0
192.168.119.128
から192.168.119.129
に自動ログインしていくつかのコマンドを実行したいので、私はexpectスクリプトを書いています。対話指令なしのLinux expectコマンド
[email protected]:~/Work$ ./a.sh
spawn ssh [email protected]
[email protected]'s password:
Last login: Sun Jan 22 17:36:21 2017 from 192.168.119.128
[[email protected] ~]# [email protected]:~/Work$
私はsuccessfulyログインが、touch /tmp/a.txt
コマンドが実行されていないようだ。
a.sh
#!/usr/bin/expect -f
set timeout 5
spawn ssh [email protected]
expect "password" {send "123456\r"}
expect "]#" {send "touch /tmp/a.txt\r"}
#interact
出力されます。
#interact
a.shのコメントを外すと正常に動作し、ファイルa.txtが作成されます。ここで
#!/usr/bin/expect -f
set timeout 5
spawn ssh [email protected]
expect "password" {send "123456\r"}
expect "]#" {send "touch /tmp/a.txt\r"}
interact
が出力されます。
[email protected]:~/Work$ ./a.sh
spawn ssh [email protected]
[email protected]'s password:
Last login: Sun Jan 22 17:41:23 2017 from 192.168.119.128
[[email protected] ~]# touch /tmp/a.txt
[[email protected] ~]#
なぜinteract
ディレクティブスクリプトの仕事のない間違いましたか?ありがとう。
はい、最後に "#interact"を "expect"に変更しました。# "{close}"が動作します。 –