Я могу нормально запустить этот ожидаемый скрипт, используя root или мою собственную учетную запись пользователя, однако, когда я запускаю его с помощью cron, я всегда получаю сообщение об ошибке.Операционная система - Ubuntu 8.04.
Ошибка электронной почты следующая:
Date: Thu, 26 Aug 2010 11:50:01 -0400
From: root@supa (Cron Daemon)
To: root@supa
Subject: Cron <root@supa> /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