Waiting~G

一起走过的日子

Archive for 九月, 2013

expect中的spwan命令让你在linux远程执行畅通

without comments

在多台linux中执行一些列的命令,需要每次登录到机器上,感觉很繁琐;之前一般实在多台机器之间建立信任关系,然后在远程操作机器,这样做,稍微还一些;不过还是存在一些不方便的情况,因为每次配置信任关系都比较繁琐;而且信任关系存在风险较高;因此写了一个脚本,可以在一台linux下,直接在其他机器终端上执行任何命令;前提是你只要知道终端的用户名和密码;这个小工具的开放,可以被容忍到其他脚本中,方便对集群的管理与操作。

脚本里面的内容很简单:主要使用expect内部命令spwan:

#!/usr/bin/expect  —

#exp_internal 1

set timeout 86400

set passwd [lindex $argv 3]

if { [llength $argv] < 4} {

puts “usage: $argv0 user ip cmd pwd”

exit 1

}

proc wait {} {

expect {

“$*” { }

“>*” { }

“#*” { }

“*assword*” {send “\n”; puts “\n” ; exit 1}

}

}

spawn /usr/local/bin/ssh -q -p36000 [lindex $argv 0]@[lindex $argv 1] “[lindex $argv 2]”

expect {

“*assword*”  {

send “$passwd\n”

expect “*assword*” { send “isd@temp\n“; wait }

}

“*no)?*”  {

send “yes\n”

expect {

“*assword*” {

send “$passwd\n”

expect “*assword*” { send “isd@temp\n“; wait }

}

}

}

timeout {

exit 2

}

}

Written by Skyma

九月 26th, 2013 at 3:27 上午

Posted in 学.Linux