You changed the argument names in the proc instead of passing those arguments to the proc when invoking it. Get a fresh copy of the script (to fix the part you broke), then change your bind to include the required arguments:
#
# Sendftp v1.01 (12/6/97) by Ernst <baschneo@trick.informatik.uni-stuttgart.de>
# Ernst's eggdrop page: http://www.sodre.net/ernst/eggdrop/
# =============================================================================
# This is a proc to send a file via FTP to another server. Useful in many
# situations, for example to upload a HTML file generated by eggdrop to your
# www server if it is not the same as your eggdrops machine.
# Change this to something to use to check if a host is alife.
# set pingcheck "" to disable this checking.
# "/bin/ping -c 1" works on Linux. Try just "/bin/ping" on other machines
# Set to "" to disable this checking
set pingcheck "/bin/ping -c 1"
# Include it with 'source scripts/sendftp.tcl'. Call it with all parameters:
#
# "sendftp /home/nor7on/www/madrid/Madrid.html www.aikidoestrac.org nor7on peruclic /www/madrid/Madrid.html"
#
# 'localfile' and 'remotefile' *must* both be given as FULL paths to the
# filenames, the first on the local, the second on the remote server.
#
# For example:
#
# sendftp /home/bill/stats.htm www.ms.com bill secret /bgates/WWW/stats.htm
# (local-file server user pass remote-file)
#
bind time - * {sendftp /home/nor7on/www/madrid/Madrid.html www.aikidoestrac.org nor7on mypass /www/madrid/Madrid.html}
proc sendftp { localfile server user pass remotefile } {
global pingcheck
if {![file exist $localfile]} {
return "sendftp: File $localfile does not exist."
}
if {$pingcheck != ""} {
if {[catch {exec [lindex $pingcheck 0] [lrange $pingcheck 1 end] $server > /dev/null 2> /dev/null}]} {
return "sendftp: Machine $server seems to be dead."
}
}
set noftp [catch {set ftpprog [exec which ftd]}]
if {$noftp} {
if {[file executable /usr/bin/ftp]} {
set ftpprog /usr/bin/ftp
set noftp 0
}
if {[file executable /bin/ftp]} {
set ftpprog /bin/ftp
set noftp 0
}
}
if {$noftp} { return "sendftp: You don't seem to have the 'ftp' tool" }
set pipe [open "|$ftpprog -n $server" w]
puts $pipe "user $user $pass"
puts $pipe "bin"
puts $pipe "put $localfile $remotefile"
puts $pipe "quit"
close $pipe
putlog "\002SendFTP: Archivo's Cargados Correctamente...\002"
return 1
}
putlog "\002SendFTP Loaded\002"
Then, I suggest you read the documentation for it..
doc/tcl-commands.doc wrote: (37) TIME (stackable)
bind time <flags> <mask> <proc>
proc-name <minute> <hour> <day> <month> <year>
Description: allows you to schedule procedure calls at certain
times. mask matches 5 space separated integers of the form:
"minute hour day month year". minute, hour, day, month have a
zero padding so they are exactly two characters long; year is
four characters. Flags are ignored.
Module: core
This means, that 5 arguments are added to your commandline, and hence the proc you call must be written to handle it.
Simplest would probably be to create a new proc with the sole purpose of executing "sendftp /home/stats.htm ......", and trigger it using the binding...
#
# Sendftp v1.01 (12/6/97) by Ernst <baschneo@trick.informatik.uni-stuttgart.de>
# Ernst's eggdrop page: http://www.sodre.net/ernst/eggdrop/
# =============================================================================
# This is a proc to send a file via FTP to another server. Useful in many
# situations, for example to upload a HTML file generated by eggdrop to your
# www server if it is not the same as your eggdrops machine.
# Change this to something to use to check if a host is alife.
# set pingcheck "" to disable this checking.
# "/bin/ping -c 1" works on Linux. Try just "/bin/ping" on other machines
# Set to "" to disable this checking
set pingcheck "/bin/ping -c 1"
# Include it with 'source scripts/sendftp.tcl'. Call it with all parameters:
#
# "sendftp /home/nor7on/www/madrid/Madrid.html www.aikidoestrac.org nor7on pass /www/madrid/Madrid.html"
#
# 'localfile' and 'remotefile' *must* both be given as FULL paths to the
# filenames, the first on the local, the second on the remote server.
#
# For example:
#
# sendftp /home/bill/stats.htm www.ms.com bill secret /bgates/WWW/stats.htm
# (local-file server user pass remote-file)
#
bind time - "*0 * * * *" sendmyfile
proc sendmyfile {min hour day month year} {
sendftp /home/nor7on/www/madrid/Madrid.html www.aikidoestrac.org nor7on pass /www/madrid/Madrid.html
}
proc sendftp { localfile server user pass remotefile } {
global pingcheck
if {![file exist $localfile]} {
return "sendftp: File $localfile does not exist."
}
if {$pingcheck != ""} {
if {[catch {exec [lindex $pingcheck 0] [lrange $pingcheck 1 end] $server > /dev/null 2> /dev/null}]} {
return "sendftp: Machine $server seems to be dead."
}
}
set noftp [catch {set ftpprog [exec which ftd]}]
if {$noftp} {
if {[file executable /usr/bin/ftp]} {
set ftpprog /usr/bin/ftp
set noftp 0
}
if {[file executable /bin/ftp]} {
set ftpprog /bin/ftp
set noftp 0
}
}
if {$noftp} { return "sendftp: You don't seem to have the 'ftp' tool" }
set pipe [open "|$ftpprog -n $server" w]
puts $pipe "user $user $pass"
puts $pipe "bin"
puts $pipe "put $localfile $remotefile"
puts $pipe "quit"
close $pipe
putlog "\002SendFTP: Archivo's Cargados Correctamente...\002"
return 1
}
putlog "\002SendFTP Loaded\002"