Chinaunix

标题: Shell expect script 能在命令行运行,但cron不行 [打印本页]

作者: gmxhk    时间: 2007-10-15 10:00
标题: Shell expect script 能在命令行运行,但cron不行
shell script用来telnet到远程的网络设备进行配置。用命令行运行没有问题,但cron不行。同样的script在Solaris可以, Linux 7.2 就不行. 那位有过相同的经验, 指点一下。谢谢。

问题是shell script里面的expect, 当用cron运行时, expect只能执行telnet, 网络设备的登陆画面出现后, 就退出了。
网上讲的可能cron environment有问题, 我改过term to vt100, 也不行。下面是cron 的env
PWD=/root
HOSTNAME=IBM-LINUX
MACHTYPE=i386-redhat-linux-gnu
LOGNAME=root
SHLVL=1
SHELL=/bin/sh
HOSTTYPE=i386
OSTYPE=linux-gnu
HOME=/root
TERM=dumb
PATH=/usr/bin:/bin
_=/usr/bin/env
作者: zqlin555    时间: 2007-10-15 11:09
提示: 作者被禁止或删除 内容自动屏蔽
作者: gmxhk    时间: 2007-10-15 14:09
cron没有问题, 其他不带expect程序都可以
作者: honst    时间: 2007-10-16 14:13
我也遇到过,分析是因为cron是后台运行没有界面交互,而expect是需要读取输出内容然后作出对应操作,应该是这个原因吧,后来我也没能解决,想想其他办法吧
作者: gmxhk    时间: 2007-10-16 17:45
你的意思是cron的问题。 可是solaris可以
作者: voxxu    时间: 2007-10-17 10:49
原帖由 honst 于 2007-10-16 14:13 发表
我也遇到过,分析是因为cron是后台运行没有界面交互,而expect是需要读取输出内容然后作出对应操作,应该是这个原因吧,后来我也没能解决,想想其他办法吧


我也有相同的问题,我用expect写了个脚本执行mysql的存储过程,看日志显示登录mysql都是正常的,登录以后命令只打了一半就没有了
比如命令是 select * from table ,可是日志只显示了 select * f 这样,莫名其妙就结束了,也没有错误信息,honst说cron没有交互,可是我的mysql登录就是通过交互来输入密码的,所以这个说法不成立。
作者: snowtty    时间: 2007-10-17 15:05
缀入到perl吧


#!/usr/bin/perl -w
system(" /usr/bin/expect yourshell ");


that will OK in crontab
作者: gmxhk    时间: 2007-10-22 10:53
原帖由 voxxu 于 2007-10-17 10:49 发表


我也有相同的问题,我用expect写了个脚本执行mysql的存储过程,看日志显示登录mysql都是正常的,登录以后命令只打了一半就没有了
比如命令是 select * from table ,可是日志只显示了 select * f 这样,莫名 ...


voxxu, 你能把你的cron env给我看一看。我的情况是不能登陆, 不过你的是服务器, 我视网络设备。
作者: qloog    时间: 2011-12-15 17:37
回复 4# honst

想一下也有道理,但是我输出到Log里,发现有交互时的信息。但不知为啥不能执行,诡异!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2