Welcome, Register for free! or Login below:
EduGeek.net RSS Feeds Register FAQ Members Social Groups User Map Calendar Search Today's Posts Mark Forums Read

*nix

*nix forum sponsored by
*nix Forum Sponsored by Navaho

Powering the backend of many of our networks, unbeknown to many. Linux, Solaris, Unix...

Go Back   EduGeek.net Forums > Technical > *nix
Reply
 
LinkBack Thread Tools Search Thread
Sponsored Links
Old 23-04-2009, 04:27 PM   #1
 
srochford's Avatar
 
Join Date: Aug 2005
Location: London
Posts: 2,259
uk
Thanks: 46
Thanked 315 Times in 278 Posts
Blog Entries: 1
Rep Power: 72 srochford has a brilliant future srochford has a brilliant future srochford has a brilliant future srochford has a brilliant future srochford has a brilliant future srochford has a brilliant future srochford has a brilliant future srochford has a brilliant future srochford has a brilliant future srochford has a brilliant future srochford has a brilliant future
Default Running commands on a batch of computers

How can I remotely execute the same command on a batch of computers?

In Windows I'd do something like:
Code:
for %i in (1 2 3 4) do psexec \\computer%i <some command>
and as long as I'm admin on the remote computers the command gets executed.

I know I can use SSH to remotely execute a command but it prompts for a password every time (and if I've not connected to the machine before I also get asked to accept the key). I'd like to do this without having to type the password lots of times or I might as well just go and log on to 36 machines!
  Reply With Quote
Old 23-04-2009, 05:01 PM   #2
 
dhicks's Avatar
 
Join Date: Aug 2005
Location: Alton, Hampshire
Posts: 2,779
uk
Thanks: 416
Thanked 315 Times in 265 Posts
Rep Power: 83 dhicks has a reputation beyond repute dhicks has a reputation beyond repute dhicks has a reputation beyond repute dhicks has a reputation beyond repute dhicks has a reputation beyond repute dhicks has a reputation beyond repute dhicks has a reputation beyond repute dhicks has a reputation beyond repute dhicks has a reputation beyond repute dhicks has a reputation beyond repute dhicks has a reputation beyond repute dhicks has a reputation beyond repute
Default

Quote:
Originally Posted by srochford View Post
I know I can use SSH to remotely execute a command but it prompts for a password every time (and if I've not connected to the machine before I also get asked to accept the key).
You generate a public / private SSH key pair, place the public key in the .ssh/authorized_keys file in the home folder of whichever user you wish to log on as on the remote machine you wish to log on to, then you tell ssh to log on to that machine using your private key - something like:

ssh -o stricthostkeychecking=no -i my.key root@SERVERNAME commandGoesHere

The stricthostkeychecking=no bit will skip you being asked whether you wish to accept the remote signature key. You might have to delete the local .ssh/known_hosts beforehand.

--
David Hicks
  Reply With Quote
Thanks to dhicks from:
srochford (27-04-2009)
Old 23-04-2009, 05:07 PM   #3
 
somabc's Avatar
 
Join Date: Oct 2007
Location: London
Posts: 1,395
uk uk scotland
Thanks: 53
Thanked 196 Times in 126 Posts
Rep Power: 53 somabc has much to be proud of somabc has much to be proud of somabc has much to be proud of somabc has much to be proud of somabc has much to be proud of somabc has much to be proud of somabc has much to be proud of somabc has much to be proud of somabc has much to be proud of somabc has much to be proud of
Send a message via MSN to somabc
Default

Not an elegant (or secure!) solution but you can use EXPECT in scripting to respond to interactive prompts if necessary.

expect(1) - Linux man page
SSH login expect shell script to supply username and password

Code:
#!/usr/bin/expect -f

# This script needs three argument to(s) connect to remote server:
# password = Password of remote UNIX server, for root user.
# ipaddr = IP Addreess of remote UNIX server, no hostname
# scriptname = Path to remote script which will execute on remote server
# For example:
#  ./sshlogin.exp password 192.168.1.11 who
# set Variables

set password [lrange $argv 0 0]
set ipaddr [lrange $argv 1 1]
set scriptname [lrange $argv 2 2]
set arg1 [lrange $argv 3 3]
set timeout -1
# now connect to remote UNIX box (ipaddr) with given script to execute
spawn ssh -p 22 root@$ipaddr $scriptname $arg1
match_max 100000

expect {
       -re ".*Are.*.*yes.*no.*" {
       send "yes\r"
       exp_continue
       #look for the password prompt
       }

       "password:" {
       send -- "$password\r"
       #he expect command will now return
       }
}

Last edited by somabc; 23-04-2009 at 05:14 PM..
  Reply With Quote
Old 23-04-2009, 05:15 PM   #4
 
pete's Avatar
 
Join Date: Dec 2005
Location: In the server room, with the lead pipe.
Posts: 1,922
uk
Thanks: 108
Thanked 174 Times in 129 Posts
Rep Power: 53 pete has much to be proud of pete has much to be proud of pete has much to be proud of pete has much to be proud of pete has much to be proud of pete has much to be proud of pete has much to be proud of pete has much to be proud of pete has much to be proud of
Default

You didn't mention whether you were querying for info or making changes, but if it's the latter you could also look at using puppet to automate things. Make a change to the reference file on the puppetmaster server and the puppets will all pull in the change when they next check in with it. Start with something simple and small (adding the school name to /etc/motd, for example) and move on from there.

puppet - Trac

Redmonk episode that led to me implementing it here: People Over Process » Puppet at Google - RedMonk Radio Episode 48
  Reply With Quote
Old 23-04-2009, 05:17 PM   #5
 
somabc's Avatar
 
Join Date: Oct 2007
Location: London
Posts: 1,395
uk uk scotland
Thanks: 53
Thanked 196 Times in 126 Posts
Rep Power: 53 somabc has much to be proud of somabc has much to be proud of somabc has much to be proud of somabc has much to be proud of somabc has much to be proud of somabc has much to be proud of somabc has much to be proud of somabc has much to be proud of somabc has much to be proud of somabc has much to be proud of
Send a message via MSN to somabc
Default

There is also sshpass, but again with the need to hardcode passwords

Key based login is really the way to go!

sshpass: Login To SSH Server / Provide SSH Password Using A Shell Script

Quote:
How do I login over ssh without using password less RSA / DSA public keys? How do I use ssh in a shell script? How do I login non-interactivly performing password authentication with SSH and shell scripts?

A. You can use sshpass command to provide password for ssh based login. From the man page:

sshpass is a utility designed for running ssh using the mode referred to as "keyboard-interactive" password authentication, but in non-interactive mode.

ssh uses direct TTY access to make sure that the password is indeed issued by an interactive keyboard user. Sshpass runs ssh in a dedicated tty, fooling it into thinking it is getting the password from an interactive user.

The command to run is specified after sshpass' own options. Typically it will be "ssh" with arguments, but it can just as well be any other command. The password prompt used by ssh is, however, currently hardcoded into sshpass.
  Reply With Quote
Old 27-04-2009, 01:53 PM   #6
 
somabc's Avatar
 
Join Date: Oct 2007
Location: London
Posts: 1,395
uk uk scotland
Thanks: 53
Thanked 196 Times in 126 Posts
Rep Power: 53 somabc has much to be proud of somabc has much to be proud of somabc has much to be proud of somabc has much to be proud of somabc has much to be proud of somabc has much to be proud of somabc has much to be proud of somabc has much to be proud of somabc has much to be proud of somabc has much to be proud of
Send a message via MSN to somabc
Default

This is EXACTLY what you want!

ClusterSSH controls a number of xterm windows via a single graphical console window to allow commands to be interactively run on multiple servers over an ssh connection.

SourceForge.net: Cluster SSH - Cluster Admin Via SSH
ssh on multiple servers Using cluster ssh -- Debian Admin
ClusterSSH - Cluster Wiki
  Reply With Quote
Thanks to somabc from:
srochford (27-04-2009)
Old 27-04-2009, 04:32 PM   #7
 
srochford's Avatar
 
Join Date: Aug 2005
Location: London
Posts: 2,259
uk
Thanks: 46
Thanked 315 Times in 278 Posts
Blog Entries: 1
Rep Power: 72 srochford has a brilliant future srochford has a brilliant future srochford has a brilliant future srochford has a brilliant future srochford has a brilliant future srochford has a brilliant future srochford has a brilliant future srochford has a brilliant future srochford has a brilliant future srochford has a brilliant future srochford has a brilliant future
Default

Thanks all - lots of new toys for me to play with :-)
  Reply With Quote
Reply

EduGeek.net Forums > Technical > *nix

Similar Threads
Thread Thread Starter Forum Replies Last Post
Having Macs And Windows Computers Running On The Same Netwrok (Windows 2003) How do.. Antp Mac 34 30-10-2008 04:52 PM
PHP commands Silverman Web Development 10 03-06-2008 03:24 PM
Computers for Schools Scheme, anyone running this yet? markman General Chat 19 09-01-2008 06:28 PM
Running batch files in vista Kained Windows Vista 6 04-09-2007 02:25 PM
Running local commands remotely MK-2 Windows 6 02-03-2007 11:31 AM



Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools Search Thread
Search Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT +1. The time now is 01:13 PM.
Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.3.2 ©2009, Crawlability, Inc.
Copyright EduGeek.net




website uptime

© 2005 - 2009 EduGeek.net
SERVER: 4
no new posts