This is the new home of the egghelp.org community forum.
All data has been migrated (including user logins/passwords) to a new phpBB version.


For more information, see this announcement post. Click the X in the top right-corner of this box to dismiss this message.

help with sendftp.tcl

Support & discussion of released scripts, and announcements of new releases.
Post Reply
User avatar
Nor7on
Op
Posts: 185
Joined: Sat Mar 03, 2007 8:05 am
Location: Spain - Barcelona
Contact:

help with sendftp.tcl

Post by Nor7on »

have eggdrop 1.6.18
bind time - "* * * * *" sendftp

proc sendftp { /home/nor7on/www/madrid/Madrid.html www.aikidoestrac.org nor7on password /www/madrid/Madrid.html } {
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
return 1
}

putlog "SendFTP Loaded"
And this is the error in the Partyline.
<(Alaska^> [02:16] Tcl error [sendftp]: can't read "localfile": no such variable
<(Alaska^> [02:17] Tcl error [sendftp]: can't read "localfile": no such variable
<(Alaska^> [02:18] Tcl error [sendftp]: can't read "localfile": no such variable
Can Help me pls ?
User avatar
rosc2112
Revered One
Posts: 1454
Joined: Sun Feb 19, 2006 8:36 pm
Location: Northeast Pennsylvania

Post by rosc2112 »

User avatar
Nor7on
Op
Posts: 185
Joined: Sat Mar 03, 2007 8:05 am
Location: Spain - Barcelona
Contact:

Post by Nor7on »

i can't understand you says.


i do it:
<\Nor7on> .set errorinfo 1
<(Alaska^> [04:08] #Nor7on# set errorinfo 1
<(Alaska^> Ok, set.
and now ? how do it
when posting code, use code tag, not quote; the code should be indented nicely, making it easier to read and understand, for example use:
Code:

foreach foo $bar {
if {$foo == "moo"} {
#do something
}
}
where do it ?

thxs. :)
User avatar
Nor7on
Op
Posts: 185
Joined: Sat Mar 03, 2007 8:05 am
Location: Spain - Barcelona
Contact:

Post by Nor7on »

opsss, sorry rosc...

Code: Select all

<(Alaska^> [04:11] #Nor7on# set errorInfo
<(Alaska^> Currently: can't read "localfile": no such variable
<(Alaska^> Currently:     while executing
<(Alaska^> Currently: "file exist $localfile"
<(Alaska^> Currently:     (procedure "sendftp" line 3)
<(Alaska^> Currently:     invoked from within
<(Alaska^> Currently: "sendftp $_time1 $_time2 $_time3 $_time4 $_time5"
<(Alaska^> [04:12] Tcl error [sendftp]: can't read "localfile": no such variable
And now ?
User avatar
user
&nbsp;
Posts: 1452
Joined: Tue Mar 18, 2003 9:58 pm
Location: Norway

Re: help with sendftp.tcl

Post by user »

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:

Code: Select all

bind time - * {sendftp /home/nor7on/www/madrid/Madrid.html www.aikidoestrac.org nor7on password /www/madrid/Madrid.html}
Have you ever read "The Manual"?
User avatar
Nor7on
Op
Posts: 185
Joined: Sat Mar 03, 2007 8:05 am
Location: Spain - Barcelona
Contact:

Post by Nor7on »

Code: Select all

#
# 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"
and, i get this other error.

Code: Select all

<(Alaska^> [14:01] Tcl error [sendftp /home/nor7on/www/madrid/Madrid.html www.aikidoestrac.org nor7on mypass /www/madrid/Madrid.html]: wrong # args: should be "sendftp localfile server user pass remotefile"
<\Nor7on> .set errorInfo
<(Alaska^> [14:03] #Nor7on# set errorInfo
<(Alaska^> Currently: wrong # args: should be "sendftp localfile server user pass remotefile"
<(Alaska^> Currently:     while executing
<(Alaska^> Currently: "sendftp /home/nor7on/www/madrid/Madrid.html www.aikidoestrac.org nor7on mypass /www/madrid/Madrid.html $_time1 $_time2 $_time3 $_time4 $_time5"

help me pls :( thanks.
n
nml375
Revered One
Posts: 2860
Joined: Fri Aug 04, 2006 2:09 pm

Post by nml375 »

Did you add the time binding yourself?
NML_375
User avatar
Nor7on
Op
Posts: 185
Joined: Sat Mar 03, 2007 8:05 am
Location: Spain - Barcelona
Contact:

Post by Nor7on »

yes, because i want, upload my .html every 5min or 10min.

helpme pls...
n
nml375
Revered One
Posts: 2860
Joined: Fri Aug 04, 2006 2:09 pm

Post by nml375 »

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...

Code: Select all

bind time - "*0 * * * *" sendmyfile
proc sendmyfile {min hour day month year} {
 sendftp "/home/nor7on/www/madrid/Madrid.html" "www.aikidoestrac.org" "nor7on" "mypass" "/www/madrid/Madrid.html"
}
NML_375
User avatar
Nor7on
Op
Posts: 185
Joined: Sat Mar 03, 2007 8:05 am
Location: Spain - Barcelona
Contact:

Post by Nor7on »

its done, but don't transfer files.

Code: Select all

#
# 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"
=/
Post Reply