2010-08-26 94 views
0

我可以使用root或我自己的用户帐户运行这个期望脚本,但是当我用cron运行它时,我总是得到一个错误。操作系统是Ubuntu 8.04。为什么这个expect脚本在cron运行时会出错?

错误电子邮件如下,

Date: Thu, 26 Aug 2010 11:50:01 -0400 
From: [email protected] (Cron Daemon) 
To: [email protected] 
Subject: Cron <[email protected]> /home/myusername/bin/uploadmyip 

myserver.com 
can't read "env(USER)": no such variable 
    while executing 
"puts $env(USER)" 
    (file "/home/myusername/bin/ftpxfer" line 8) 

脚本 'uploadmyip' 如下,

#!/bin/bash 
wget -O /dev/stdout http://checkip.dyndns.com/ 2> /dev/null > /tmp/myip.txt && /home/myusername/bin/ftpxfer && chmod 777 /tmp/myip.txt 

的期望脚本ftpxfer如下,

#!/usr/bin/env expect 

if { [lrange $argv 0 0] == ""} { 
} 

set server myserver.com 
puts $server 
puts $env(USER) 
system "echo " 
system pwd 
set timeout 5 
spawn -noecho ftp $server 
expect { 
     timeout {puts "ftp to $server timed out"; exit} 
     "Name ($server:$env(USER)):" 
     } 
set timeout 300 
send "username\r" 
expect "Password:" 
send "password\r" 
expect "ftp>" 
send "binary\r" 
expect "ftp>" 
send "put /tmp/myip.txt myip.txt\r" 
expect "ftp>" 
send "^D\r" 

输出“sudo crontab -l”

$ sudo crontab -l 
# m h dom mon dow command 
50 * * * * /home/myusername/bin/uploadmyip 
+0

我刚刚意识到,超级用户可能是一个更好的论坛。 – grokus 2010-08-26 16:24:19

回答

2

答案是,在您的系统上cron不会设置USER环境变量 - cron使用非常小的环境。使用LOGNAME环境变量可能会带来更多运气。

+0

你是对的先生,我刚刚测试和LOGNAME工作。谢谢。 – grokus 2010-08-26 17:21:14

相关问题