Re: [問題] 用expect, ssh 在兩server傳值

作者: drag (京都念慈庵,賈詡念費翔)   2013-01-25 10:49:10
※ 引述《imio24 (imio)》之銘言:
: 我需要從server A 裡某script對serverB執行某command 並從B取得回傳值到server A
: 請問我要如何再server A拿到server b的server name (Linux xxx.com 2.6.32-20130101.60.1.bh6.x86_64 #1 SMP Tue Jan 1 22:59:09 EST 2013 x86_64 x[A86_64 x86_64 GNU/Linux)
: 謝謝
: $sh script.sh 10.0.0.1 admin 1234
: script.sh
: #!/bin/sh
: export ip=$1
: export usr=$2
: export passwd=$3
: export a=""
: expect -c 'spawn ssh '$usr'@'$ip'; expect password; send "'$passwd'\n" ; expect "*]#" ; send "a=`uname -a | grep Linux`\n" ; send "exit\n" ; interact'
: 再server B
: $uname -a | grep Linux
: Linux xxx.com 2.6.32-20130101.60.1.bh6.x86_64 #1 SMP Tue Jan 1 22:59:09 EST 2013 x86_64 x[A86_64 x86_64 GNU/Linux
我修改了一下~
也許這是你要的,
1. 在server B上面定義a應該不等於server A的a,故在遠端只要直接送值就好,回來暴力grep
2. 請注意你prompt是寫死的("****]#"?),哪一天換server prompt改變,這個script就會卡死了~
3. 因為我測試的ssh port不是預設22,所以我雞婆的加了param
4. 真是有趣,我今天才知道有expect這套件,就大家切磋切磋吧~
interact後面是不是要再塞一些什麼動作啊?<
作者: imio24 (imio)   2013-01-25 11:55:00
請問我是單行code去跑 發現 a變數只在B server local還是我錯了.所以我暫時的處理方法是在B作一個file在傳回A
作者: drag (京都念慈庵,賈詡念費翔)   2013-01-25 13:21:00
我要說的是:原來那行這樣定義只會在B server local有效故我在B server上並沒有定義a了

Links booklink

Contact Us: admin [ a t ] ucptt.com