たとえば、
#!/bin/sh
P=pass
expect -c "
spawn ssh -l user remotehost command
expect password:
send $P
interact
"
というシェルにおいてcommandの結果を取得することを目的としています。
このシェルをtest.shとすると、
test.sh > log
でも実現できるのですが、それだとパスワード入力などのコマンド受け渡しまでlogに保存されます。
純粋にcommandの結果だけを取得したいのですが、ご教授のほど、よろしくお願いします。
#! /usr/local/bin/expect log_user 0 spawn ssh -l user remotehost command expect password: send "password\r" interact
#! /usr/local/bin/expect spawn ssh -l user remotehost command expect password: send "password\r" log_user output.txt
expect のスクリプトで書いてますが、シェルスクリプトで expect のコマンドに書いても同じです。
■参考
http://linuxjm.sourceforge.jp/html/expect/man1/expect.1.html
http://nsa.kpu-m.ac.jp/gijutu/expect/howto-expect.html
シェルの先頭(#!/bin/sh の次)で「stty -echo」とやるといかがですか.
ご回答ありがとうございます。
以下の処理でできると思ったのですが、結果として変わりませんでした(パスワードも出力される)
もう少し検討してみます。
stty -echo
spawn ssh -l user remotehost
expect password:
stty echo
send command\r
#! /usr/local/bin/expect log_user 0 spawn ssh -l user remotehost command expect password: send "password\r" interact
#! /usr/local/bin/expect spawn ssh -l user remotehost command expect password: send "password\r" log_user output.txt
expect のスクリプトで書いてますが、シェルスクリプトで expect のコマンドに書いても同じです。
■参考
http://linuxjm.sourceforge.jp/html/expect/man1/expect.1.html
http://nsa.kpu-m.ac.jp/gijutu/expect/howto-expect.html
ご回答ありがとうございます。
log_fileは指定した位置からの出力結果をログに格納することが確認できました。
一応、これで期待する結果となりました。
ありがとうございました。
ご回答ありがとうございます。
2011/11/21 00:24:04log_fileは指定した位置からの出力結果をログに格納することが確認できました。
一応、これで期待する結果となりました。
ありがとうございました。