我有一个期望脚本,应该将文件上传到sftp服务器
期望脚本独立工作。 例如,当我运行
/home/john/bin/mytest.sh
工作正常。
但是当我尝试将它与crontab一起使用时,它不起作用
1 * * * * /usr/bin/expect -f /home/john/bin/mytest.sh
#!/usr/bin/expect
spawn sftp john@johncdq.com
expect "password:"
send “@user[as\n”
expect "sftp>"
send "cd batch/unp\n"
expect "sftp>"
send " put /home/john/newbin/NY010120120717.dat\n"
expect "sftp>"
send "exit\n"
expect eof
exit
答案 0 :(得分:0)
首先,确保您启用了运行cron: https://help.ubuntu.com/community/CronHowto 请参阅启用用户级别Cron 部分
其次,尝试用“
”括起命令1 * * * * "/usr/bin/expect -f /home/john/bin/mytest.sh"
或者更好的是,让一个 Expect脚本可执行文件作为一个独立的程序,你必须做两件事:
1-使脚本可执行
2-提供脚本的路径以获得期望。我系统上的路径是:/ usr / bin / expect;因此,使用前面的“shebang”(#!)输入脚本第一行的路径:
#!/usr/bin/expect -f
将cron作业更改为:
1 * * * * /home/john/bin/mytest.sh
答案 1 :(得分:0)
尝试从crontab行中删除expect解释器并将其写为(我通常用扩展名.exp命名我的期望脚本,我不知道它是否重要):
* * * * * /home/john/bin/mytest.sh
在脚本中有#!/ usr / bin / expect行,您不需要在命令行中再次编写它。此外,crontab中的第二个参数是运行脚本而不是解释器的用户的名称。我在第一个位置写了一个(*),因为我猜你想每分钟运行一次脚本,如果你写一个(1)你的脚本只会在每小时的第一分钟运行。我希望它可以提供帮助。