要求统计IDC中所有机器上装的jdk的版本,想用脚本批量查询但是在用java -version >log时,运行的结果总是显示在终端而不是重定向到log中。google了一番说java的输出是标准错误流。要把错误输出也输出到标准输出即在命令后面加上2>&1。
#!/usr/bin/expect
set timeout 3
set localhost 192.168.151.90
#login to remote host
foreach host {
192.168.151.40
...
...
192.168.151.23
} {
spawn ssh -l root ${host}
expect {
"no)?" {send "yes\r";exp_continue}
"password:" {send "123456\r"}
}
expect "]*"
send "echo -e 'host:\\c'>/tmp/$host\r"
expect "]*"
send "ifconfig eth0|grep -w inet|sed 's/^.*addr://'|sed 's/Bcast.*$//'>>/tmp/$host\n"
expect "]*"
send "java -version>>/tmp/$host 2>&1\r"
expect "]*"
send "scp /tmp/$host root@$localhost:/tmp\r"
expect {
"no)?" {send "yes\r";exp_continue}
"password:" {send "123456\r"}
}
expect "]*"
send "exit\r"
exec cat /tmp/$host >>/tmp/java_version
spawn rm -f /tmp/$host
}
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27181165/viewspace-1063013/,如需转载,请注明出处,否则将追究法律责任。