[NTLUG:Discuss] Scripting help
Leroy Tennison
leroy.tennison at verizon.net
Fri Sep 26 21:50:58 CDT 2014
Thanks for your reply. In response to your first question, the script
is hosted on the system I'm connecting to via ssh. More specifically,
the local host is Windows, the ssh client is Putty and only the remote
system is Linux. I do not have file system write access on the Linux
machine which makes things challenging. I write the script
interactively, pasting in my list at the appropriate place.
I "played around" with your final script and may have come up with a
solution:
hosts="host1
host2
host3";
for i in $hosts; do echo aaa $i bbb; done (I'm testing
from home where no host list exists so 'echo aaa $i bbb' shows the command)
What I got was:
aaa host1 bbb
aaa host2 bbb
aaa host3 bbb
which looks like what I want. A test Monday will tell...
On 09/26/2014 10:03 AM, Eric Schnoebelen wrote:
> Leroy Tennison writes:
> - I'm trying to get telnet to repetitively connect to a newline-delimited
> - list of devices. In other words, if I have device1, device2 and device3
> - then what I want is:
> -
> - telnet device1
> - telnet device2
> - telnet device3
> -
> - I've used three devices as an example but my lists are much longer. For
> - reasons too complicated to go into, this has to be done via ssh to a
> - Linux machine where I have no file system access (so the list has to be
> - pasted into the script interactively).
>
> Is the script hosted locally or on the system you're using SSH
> to connect too?
>
> If the script, and the list of devices are in files locally,
> something like this could work:
>
> for h in host1 host2.. ; do
> ssh gateway telnet $h
> done
>
> If the script is remote, but can take an argument set (aka, it
> looked like this:
> for h in "$@"; do
> telnet $h
> done
> )
>
> it could be called as
>
> ssh gateway <script> $(cat <devices>)
>
> - I've tried using grave around the list and setting IFS to a space with
> - similar results. I considered using 'read' but have initially decided
> - against it because I don't want the script constrained to a given number
> - of list entries.
>
> Why would using read constrain you to a limited number of
> entries? Here's a small shell program to keep gobbling the read
> values, and turn it into a single variable that can be parsed by
> the for subcommand:
>
> hosts=""
> while read host ; do
> hosts="$hosts '$host'"
> done
> for h in $hosts; do
> telnet $h
> done
>
> --
> Eric Schnoebelen eric at cirr.com http://www.cirr.com
> Five boxes preserve our freedoms:
> soap, ballot, witness, jury, and cartridge
>
> _______________________________________________
> http://www.ntlug.org/mailman/listinfo/discuss
>
More information about the Discuss
mailing list