On Wed, 2009-11-04 at 13:13 +0000, Dan Track wrote: > On Wed, Nov 4, 2009 at 1:10 PM, Dan Track <dan.track@xxxxxxxxx> wrote: > > Hi, > > > > I'm running a command like this: > > > > for i in server1 server2;do ssh root@$i "`hostname`";done. > > > > However the hostname command always outputs the hostname of the server > > that the above command is run from. I'd like to know how to run this > > hostname command so that it actually runs on server 1, server2 etc.. > > > > Thanks > > Dan > > > > Sorry just to add the actual script was like this: > > for i in server1 server2;do ssh root@$i "DNSNAME=\"basename > \`hostname\`\";echo $DNSNAME";done Not sure why you're setting a variable here but to have "basename" run as a command and assign the output to DNSNAME you need to have basename inside a pair of backticks too. You'll then hit another problem because you want to have nested backticks (one pair for basename and another for hostname). Bash supports '$()' as an alternative to backticks that does allow nesting - writing $(hostname) is equivalent to `hostname` and allows you to write $(basename $(hostname)). I'm not sure basename is going to do what you want here though - are you looking for the short host name or the domain name? The basename command separates components of a path based on the '/' (or whatever the system defined path separator is). E.g.: $ DNS=$(basename $(hostname)) $ echo $DNS breeves.fab.redhat.com If you just want the short hostname you can pass -s to hostname: $ ssh pe1950-1.gsslab hostname -s pe1950-1 Or the domain with -d: $ ssh pe1950-1.gsslab hostname -d gsslab.fab.redhat.com Have a look at the man page for hostname for more options. Regards, Bryn. -- fedora-list mailing list fedora-list@xxxxxxxxxx To unsubscribe: https://www.redhat.com/mailman/listinfo/fedora-list Guidelines: http://fedoraproject.org/wiki/Communicate/MailingListGuidelines