I need to periodically connect to a server from a Linux client and send some commands, so I wrote this script:
JavaScript
x
#!/bin/sh
telnet theserver.somewhere.com 9999 <<EOF
command 1
command 2
command 3
EOF
The problem is that I need to wait between commands. This script sends the commands and disconnects too quickly, which the server detects, and drops the commands. It works if I open the connection from the command line and then paste the commands one at a time, and it works from non-local clients, but from local clients the script fails. It would be enough to just pause for a second or so between each command.
I can write a C or Java program that does this, but what is the simplest way? The usual scripting languages (Perl and Python) are available, if you need them.
Advertisement
Answer
Shell commands to echo a line at a time from a file to telnet:
JavaScript
cat commands.txt |
( while read line; do echo $line; sleep 1; done ) |
telnet theserver.somewhere.com 9999