Je peux lancer ce script expect très bien en utilisant root ou mon propre compte utilisateur, mais quand je l'exécute avec cron, je reçois toujours une erreur. L'OS est Ubuntu 8.04.Pourquoi ce script expect génère-t-il une erreur lorsqu'il est exécuté par cron?
email d'erreur est la suivante,
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)
Le script 'uploadmyip' est comme suit,
#!/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
Le script expect ftpxfer est comme suit,
#!/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"
La sortie de "sudo crontab -l"
$ sudo crontab -l
# m h dom mon dow command
50 * * * * /home/myusername/bin/uploadmyip
Je viens de réaliser que Superuser aurait pu être un meilleur forum pour ça. – grokus