人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

unixのshシェルを使ってexpectを使用してリモート操作(ssh)を行う際、その結果を取得する方法を教えてください。

たとえば、
#!/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の結果だけを取得したいのですが、ご教授のほど、よろしくお願いします。

●質問者: cochoo
●カテゴリ:インターネット
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● okamotoy

シェルの先頭(#!/bin/sh の次)で「stty -echo」とやるといかがですか.


cochooさんのコメント
ご回答ありがとうございます。 以下の処理でできると思ったのですが、結果として変わりませんでした(パスワードも出力される) もう少し検討してみます。 stty -echo spawn ssh -l user remotehost expect password: stty echo send command\r

2 ● a-kuma3
ベストアンサー
#! /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


cochooさんのコメント
ご回答ありがとうございます。 log_fileは指定した位置からの出力結果をログに格納することが確認できました。 一応、これで期待する結果となりました。 ありがとうございました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ