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