New upstream version 2.1.3
This commit is contained in:
105
nxnode-login
Executable file
105
nxnode-login
Executable file
@@ -0,0 +1,105 @@
|
||||
#!/usr/bin/expect
|
||||
#
|
||||
# nxnode-login: spawns and controls ssh
|
||||
#
|
||||
# Copyright (c) 2004-2006 by Fabian Franz.
|
||||
#
|
||||
# License: GPL, version 2
|
||||
#
|
||||
# SVN: $Id: nxnode-login 512 2008-03-10 23:01:03Z fabianx $
|
||||
#
|
||||
|
||||
# Syntax: nxnode-login {ssh|su|test-nx} user ssh-port executable command tosend
|
||||
|
||||
set auth_method [lindex $argv 0]
|
||||
set user [lindex $argv 1]
|
||||
set port [lindex $argv 2]
|
||||
set executable [lindex $argv 3]
|
||||
set command [lindex $argv 4]
|
||||
set tosend [lindex $argv 5]
|
||||
catch {set tosend $env(NXNODE_TOSEND)}
|
||||
set command_ssh "ssh"
|
||||
catch {set command_ssh $env(COMMAND_SSH)}
|
||||
set host "127.0.0.1"
|
||||
catch {set host $env(NODE_HOSTNAME)}
|
||||
|
||||
#
|
||||
# Special test-nx instruction for nxsetup
|
||||
#
|
||||
|
||||
if { "$auth_method"=="test-nx" } {
|
||||
set stty_init "raw icrnl -echo"
|
||||
|
||||
set publickey ""
|
||||
catch {set publickey $env(NODE_PUBLICKEY)}
|
||||
|
||||
set pid [spawn -noecho $command_ssh -2 -x -l "$user" "$host" -i "$publickey" -o "RhostsAuthentication no" -o "PasswordAuthentication no" -o "PubkeyAuthentication yes" -o "PreferredAuthentications publickey" -o "ConnectTimeout 3" -p "$port" "$executable $command" ]
|
||||
|
||||
while {1} {
|
||||
expect {
|
||||
"Are you sure you want to continue connecting*" { send "yes\r" }
|
||||
"Permission denied*" { exit 1 }
|
||||
"HELLO NXSERVER - Version*\n" {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
expect "NX> 105" { send "quit\r" }
|
||||
expect "NX> 999 Bye"
|
||||
exit 0
|
||||
}
|
||||
|
||||
#
|
||||
# Log the user in via the supplied method.
|
||||
#
|
||||
|
||||
expect_user -re "(.*)\n"
|
||||
set password $expect_out(1,string)
|
||||
|
||||
set stty_init "raw icrnl -echo"
|
||||
|
||||
if { "$auth_method"=="ssh" } {
|
||||
set pid [spawn -noecho $command_ssh -2 -x -l "$user" "$host" -o "NumberOfPasswordPrompts 1" -p "$port" "$executable $command" ]
|
||||
} elseif { "$auth_method"=="su" } {
|
||||
set env(LANG) "C"
|
||||
set pid [spawn -noecho su - "$user" -c "$executable $command" ]
|
||||
} elseif { "$auth_method"=="guest" } {
|
||||
set pid [spawn -noecho $executable $command ]
|
||||
} else {
|
||||
exit 1
|
||||
}
|
||||
|
||||
while {1} {
|
||||
expect {
|
||||
"Are you sure you want to continue connecting*" { send "yes\r" }
|
||||
"assword*:" { sleep 0.3; send "$password\r" }
|
||||
"SSH passphrase:" { sleep 0.3; send "$password\r" }
|
||||
"Permission denied*" { exit 1 }
|
||||
"su: Authentication failure" { exit 1 }
|
||||
"NX> 1000 NXNODE - Version" {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if { "$tosend"!="" } {
|
||||
send "$tosend\r"
|
||||
}
|
||||
|
||||
expect {
|
||||
"NX> 716 finished" { }
|
||||
"NX> 700" {
|
||||
set timeout -1
|
||||
expect {
|
||||
"NX> 1001 Bye." { exit 0 }
|
||||
"NX> *" { exp_continue }
|
||||
}
|
||||
exit 0
|
||||
}
|
||||
"NX> 716 Public key is already present in:" { }
|
||||
"NX> 716 Public key added to:" { }
|
||||
"NX> 716 Terminating session * on user request." { }
|
||||
"NX> 716 Suspending session * on user request." { }
|
||||
"NX> 500 Error: " { exit 1}
|
||||
}
|
||||
expect "NX> 1001 Bye."
|
||||
Reference in New Issue
Block a user