| |||||||||||
expect(iing) via ssh to a down box Posted by liderbug (liderbug), 19 July 2006 In an expect script ...<snip> send -- ssh $User@$Mach expect -exact word: The problem is $Mach is down, the network is down, maint etc. Ping works - ssh will just sit there. I've got a semi dependable script. set timeout 4 send -- ssh..... all piped to wc -c motd will return right at 2000 char, failure about 400 followed by if [ $n -gt 1000 ] exit 0 else exit 1 Any other ways to not get your computer hung? Thanks Posted by admin (Graham Ellis), 19 July 2006 Yep, either put a timeout on it, or ping it first (but pinging it first may give you a false live if the remote machine is up but not running sshd for some reason).If you have a lot of machines to try in parallel, ssh out to all of them and keep an id list so that all your timeouts are happening in parallel.\ Posted by liderbug (liderbug), 20 July 2006 <sigh>I'm working on this: ------------------------------------- #!/bin/bash typeset -i n n=`${HOME}/bin/check_connect.exp $1 | wc -c` if [ $n -gt 1000 ] then echo "0" exit 0 else echo "1" exit 1 fi -------------------------------------------- #!/usr/bin/expect set Host [lindex $argv 0] set timeout 4 spawn $env(SHELL) match_max 100000 send -- "ssh xxxxx@$Host\r" expect -exact "word: " send -- "*******\r" expect -exact "> " send -- "exit\r" ----------------------------------------------- Then call the bash script and if return is 0 life is good, if it's "1" don't go there. Posted by admin (Graham Ellis), 20 July 2006 So .... rather than exactly expecting only "word" expect EITHER "word" or a timeout ... different actions on each. See here for an example of the syntax. This page is a thread posted to the opentalk forum
at www.opentalk.org.uk and
archived here for reference. To jump to the archive index please
follow this link.
|
| ||||||||||
PH: 01144 1225 708225 • FAX: 01144 1225 793803 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho |