今天写了一个脚本,本地可以运行没问题,但是在crontab定时计划里不能运行,十分纠结,什么环境变量,权限统统试过不行。
脚本的作用是ssh 到某一台交换机执行查看CPU的命令并保存到本地的文本里,然后会卡住,我用timeout关掉。
后面主机和命令随便打的。
timeout 3 ssh root@123.123.123.123 dis cpu-usges > 1.txt
执行后3秒会关闭
但是问题也出在这,他是以中断方式运行,相当于报错,在手动执行的时候没什么问题,在crontab里就会出现数据丢失,执行不了这条命令,所以改良后,这个命令不用了,用脚本代替,效果和这个差不多,不过那个是正常中断退出,接下来看下脚本吧。我把放在/root下面的
/root/ssh IP地址 用户名 密码 '执行的命令' > 把输出的内容保存到本地的文件中,接下来你们想怎么处理都可以了。
##################
#!/usr/bin/expect
#start
#设置expect等待超时时间;
set timeout 2
从命令行中得到命令参数0~3,并且保存到内部变量中;
set switch_ip [lindex $argv 0]
set Username [lindex $argv 1]
set Password [lindex $argv 2]
set mingling [lindex $argv 3]
#开始telnet一台设备,ip地址为命令行传递进来的第一个参数
spawn ssh $Username@$switch_ip
expect "password"
send "$Password\r"
expect ">"
send "$mingling\r"
expect eof
#####################################
转载于:https://blog.51cto.com/fatty/1855987