XiZi's Blog
Cleanup 一个清理所有节点进程的小Script
#!/bin/bash
if [ x$1 = x ]; then
echo "use $0 processname to kill all named process on all active nodes."
exit
fi
activenodes=$(shownodes | sed -n 's/\(c[0-9]\{4\}-[0-9]\/8\)/\1/gp' | sed -n 's/ /\n/pg' | sed -n 's/.*\(c[0-9]\{4\}\)-[0-9]\/8.*/\1/gp')
#echo $activenodes
#run Expect
/usr/bin/expect -<<EOD
foreach node {
$activenodes
} {
#循环,可以多台相同密码的服务器同时处理,不同密码的需要改动一下,在下面再加一个密码的循环,
spawn rsh \$node
expect {
"*(yes/no)*" { send "yes\r"}
"password:" { send "password\r" }
} #SSH第一次远程登录服务器
expect "username*"
#send "su -\r" #SSH普通用户名密码登录
#expect "Password:"
#send "123456\r" #SSH的root用户名密码登录
#expect -timeout 1
#expect "root"
send "ps aux | grep $1 \r"
send "killall -9 $1 \r"
#send "echo helloworld \r"
#expect "username"
send "exit \r"
}
EOD
echo "Completed"
updated but not tested one
#!/bin/bash
if [ x$1 = x ]; then
echo "use $0 processname to kill all named process on all active nodes."
exit
fi
activenodes=$(shownodes | sed -n 's/\(c[0-9]\{4\}-[0-9]\/8\)/\1/gp' | sed -n 's/ /\n/pg' | sed -n 's/.*\(c[0-9]\{4\}\)-[0-9]\/8.*/\1/gp')
#echo $activenodes
logfile="$HOME/bin/cleanup.log"
echo "" > $logfile
#run Expect
/usr/bin/expect -<<EOD
foreach node {
$activenodes
} {
#循环,可以多台相同密码的服务器同时处理,不同密码的需要改动一下,在下面再加一个密码的循环,
spawn rsh \$node
expect {
"*(yes/no)*" { send "yes\r"}
"password:" { send "password\r" }
} #SSH第一次远程登录服务器
expect "usename*"
#send "su -\r" #SSH普通用户名密码登录
#expect "Password:"
#send "123456\r" #SSH的root用户名密码登录
#expect -timeout 1
#expect "root"
send "echo \\\$HOSTNAME >> $logfile \r"
send "ps aux | grep $1 | grep -v grep >> $logfile \r"
send "killall -9 $1 \r"
#send "echo helloworld \r"
#expect "sofair"
send "exit \r"
}
EOD
echo "Completed"
echo "Logs are Saved to $logfile"