使用expect 的目的就是为了省去输入密码,把要做的事情丢到cron中,自动去执行。没成想,手动测试脚本一点问题没有,可是到了cron下就出问题。看日志是到了输入密码的地方就断了。说明脚本中提供的密码,它根本就没有读到?
解决问题:
1. 手动执行可以,但到cron不成功,根据以前的经验,这样的问题往往都是环境变量导致的,因为cron里定的PATH和系统的PATH是不同的。于是,修改cron的PATH和系统的PATH一样。
echo $PATH
把得到的环境变量复制到/etc/crontab
vi /etc/crontab
替换原来的那行
这样做了后,问题依旧。
2. 网上查资料吧, 找了好多篇文章,有的说加 log之类的,尝试过依然不管用,有的说是环境变量的问题,这我也做了依然不行。历经艰辛终于找到一篇有用的文章。其实只有一句话:“把interact改成了expect eof后, 程序运行正常”
我的expect脚本最后一行也是用的interact ,改成 expect eof 后问题终于完美解决!
解决问题:
1. 手动执行可以,但到cron不成功,根据以前的经验,这样的问题往往都是环境变量导致的,因为cron里定的PATH和系统的PATH是不同的。于是,修改cron的PATH和系统的PATH一样。
echo $PATH
把得到的环境变量复制到/etc/crontab
vi /etc/crontab
替换原来的那行
这样做了后,问题依旧。
2. 网上查资料吧, 找了好多篇文章,有的说加 log之类的,尝试过依然不管用,有的说是环境变量的问题,这我也做了依然不行。历经艰辛终于找到一篇有用的文章。其实只有一句话:“把interact改成了expect eof后, 程序运行正常”
我的expect脚本最后一行也是用的interact ,改成 expect eof 后问题终于完美解决!
编辑回复