今天写了一个脚本,本地可以运行没问题,但是在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

#####################################