- 论坛徽章:
- 0
|
现在我的需求:在主机通过脚本监控多台主机的状态(当然可以用nagios但是我想用脚本玩玩)
我的思路:由于对每台主机的状态要求不一样,所以提前准备各个被监控主机的零散脚本
1、在主脚本内调用expect将对应监控脚本scp到目标主机,并且+x权限
2、依然用expect ssh到目标主机执行监控脚本
3、还是用expect ssh到目标主机删除scp过去的脚本,为了不留痕迹。(最初设想是将零散脚本直接手动放在目标主机根下,但是貌似就不想自动化运维了)
现在的问题是:通过论坛我知道expect有语法可以实现在远程主机执行本地脚本。大概是把脚本内容读取赋给cmd,然后send过去
spawn ssh -l root -o StrictHostKeyChecking=no
open urscript [ open A.sh ]
while {[ gets $urscript cmd ] >= 0} {send "$cmd\r"}
close $urscript
但是我不知道具体的语法要如何写 所以想求教各位 @waker
附上我的expect函数,然后应该如何将上述命令加进来
auto_excute () {
expect -c "set timeout -1;
spawn -noecho ssh -o StrictHostKeyChecking=no $2 ${@:3};
expect {
*assword:* {send -- $1\r;
expect {
*denied* {exit 1;}
eof
}
}
eof {exit 2;}
}
"
return $?
}
比如 $3之前是 ls 但是现在我想调用/root/abc.sh 如何做呢 |
|