Re: [OT] run command via ssh - problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Nov 4, 2009 at 1:33 PM, Bryn M. Reeves <bmr@xxxxxxxxxx> wrote:
> 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.

Hi Bryn,

Many thanks. I tried hostname -s but I keep getting the following:

hostname: Host name lookup failure

This may be because the hostname's are short already e.g just
"server1" instead of "server1.example.com"

I've updated teh script to your recommendations but I still get the
local hosts hostname in teh output instead of the remote servers
hostname. Any other thoughts?

I now run the following:

for i in server1 server2;do ssh root@$i "DNSNAME=$(basename
$(hostname)$);echo $DNSNAME";done

Thanks
Dan

-- 
fedora-list mailing list
fedora-list@xxxxxxxxxx
To unsubscribe: https://www.redhat.com/mailman/listinfo/fedora-list
Guidelines: http://fedoraproject.org/wiki/Communicate/MailingListGuidelines
[Index of Archives]     [Older Fedora Users]     [Fedora Announce]     [Fedora Package Announce]     [EPEL Announce]     [Fedora Magazine]     [Fedora News]     [Fedora Summer Coding]     [Fedora Laptop]     [Fedora Cloud]     [Fedora Advisory Board]     [Fedora Education]     [Fedora Security]     [Fedora Scitech]     [Fedora Robotics]     [Fedora Maintainers]     [Fedora Infrastructure]     [Fedora Websites]     [Anaconda Devel]     [Fedora Devel Java]     [Fedora Legacy]     [Fedora Desktop]     [Fedora Fonts]     [ATA RAID]     [Fedora Marketing]     [Fedora Management Tools]     [Fedora Mentors]     [SSH]     [Fedora Package Review]     [Fedora R Devel]     [Fedora PHP Devel]     [Kickstart]     [Fedora Music]     [Fedora Packaging]     [Centos]     [Fedora SELinux]     [Fedora Legal]     [Fedora Kernel]     [Fedora OCaml]     [Coolkey]     [Virtualization Tools]     [ET Management Tools]     [Yum Users]     [Tux]     [Yosemite News]     [Gnome Users]     [KDE Users]     [Fedora Art]     [Fedora Docs]     [Asterisk PBX]     [Fedora Sparc]     [Fedora Universal Network Connector]     [Libvirt Users]     [Fedora ARM]

  Powered by Linux