Hello, as I ckeck a script via 'sh -n <file>' I receive the syntax error
listserver.tcl: 31: Syntax error: "else" unexpected (expecting "then") However syntax looks good and script execution is fine. Please find attached file for more details. Is there anything weird with 'sh -n' behaviour ? Or anything else ? Thanks for attention. Regards, Bruno -- PGP key ID: 0x2e604d51 Key server: hkp://subkeys.pgp.net Key fingerprint = 713F 7956 9441 7DEF 58ED 1951 7E07 569B 2E60 4D51 --
#!/bin/sh # Executing TCL-interpreter #\ echo -e "Trying interpreters...\n" && no_exit_on_failed_exec=1 && export no_exit_on_failed_exec && shopt -s execfail 2>/dev/null; true && { echo "Trying tclsh..."; exec tclsh "$0" "$@" 2>/dev/null || echo "Trying tcl..."; exec tcl "$0" "$@" 2>/dev/null || echo -e "No valuable interpreter on $(hostname) for the ListServer!\n\nYOU NEED TCL INSTALLED ON THE REMOTE SYSTEM\n\nExiting..."; } ############################################################# # SecPanel - ListServer # Service for remote file selection and scp # Version SecPanel 0.40 # Author: Steffen Leich <[EMAIL PROTECTED]> ############################################################# global clientpass, authenticated, busy; # gets set with each listserver-launch set clientpass <PASS-XXXXX>\n set authenticated 0 set busy 0 proc scpAuth {sock} { global pass clientpass authenticated if {! $authenticated} { gets $sock passandport set serverpass [lindex [split $passandport] 1] if {$serverpass != $clientpass} { puts "Wrong authentication from ListClient (SecPanel)\nHad to reject connection" close $sock return } else { set authenticated 1 puts "SecPanel sent good authentication.\nNow serving..." GiveList $sock } } then else { GiveList $sock } } proc Accept {sock addr port} { global main busy puts "Connection from $addr on port $port" if {! $busy} { fconfigure $sock -buffering line fileevent $sock readable "scpAuth $sock" set busy 1 } else { puts "*** SECOND CONNECTION FROM $addr:$port - HAD TO REJECT CONNECTION! ***" close $sock } } proc GiveList {sock} { global main env if {[eof $sock] || [catch {gets $sock input}]} { close $sock puts "closed connection to $sock" } else { set dir [lindex [split $input \t] 0] set hmode [lindex [split $input \t] 1] # home dir listing if {$dir == "++InitListing"} { if [info exists env(HOME)] { set dir $env(HOME) } else { set dir "/" } } # exit command if {$dir == "++CloseYourSelf"} { close $sock close $main puts "SecPanel ListServer exiting..." after 1000 exit } # make dir command if [string match "++MakeDir *" $dir] { puts "making dir" file mkdir "[string range $dir 10 end]" return } # delete command if [string match "++DelFile *" $dir] { set delfile "[string range $dir 10 end]" puts "Deleting $delfile..." if {[catch {file delete $delfile} err] > 0} { puts "$err" } return } # long listing command set dolist 0 if [string match "++Listingl *" $dir] { set ls "l" set range 11 set dolist 1 } elseif [string match "++Listingla *" $dir] { set ls "la" set range 12 set dolist 1 } if {$dolist} { set fl [open "| ls -$ls [quote_space [string range $dir $range end]]/" r] while {[gets $fl line] >= 0} { puts $sock $line } close $fl puts $sock "+++++" return } # default listing command if $hmode { set gpat "glob -nocomplain \"$dir/.*\" \"$dir/*\"" } else { set gpat "glob -nocomplain \"$dir/*\"" } # Checking rights and existance... puts $sock "+++++$dir" foreach f [lsort [eval $gpat]] { if {[file tail "$f"] == ".." || [file tail "$f"] == "."} { continue } if [file isdirectory "$f"] { puts $sock "++ $f" } else { puts $sock "$f" } } puts $sock "+++++" } } proc quote_space {in} { regsub -all " " $in "\\ " out return $out } proc hostinfo {} { puts "-------------------------------------------------------------" puts "We are running [info nameofexecutable] on [info hostname]" puts "-------------------------------------------------------------\n" } hostinfo set kc 0 while {[catch {set main [socket -server Accept -myaddr 127.0.0.1 <listserverport-XXXXX>]} err] > 0} { puts "Listserver error: $err" if {! $kc} { if [file exists "$env(HOME)/.listserver.pid"] { puts "Trying to remove a previous ListServer..." set pf [open "$env(HOME)/.listserver.pid" r] exec kill -9 [read -nonewline $pf] close $pf set kc 1 } } else { exit } } puts "SecPanel ListServer waiting for connections..." set pf [open "$env(HOME)/.listserver.pid" w] puts -nonewline $pf [pid] close $pf # Tell SecPanel that we are prepared to send filelistings set callbacksocket [socket localhost <controlremoteport-XXXXX>] fconfigure $callbacksocket -buffering line puts $callbacksocket "opengui $clientpass" puts "Sent CallBack to SecPanel" close $callbacksocket vwait forever
pgp7BxB0eKBEQ.pgp
Description: PGP signature