• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 4157
  • Last Modified:

how to echo CTRL-C to netcat or stop netcat from expecting CTRL-C to terminate?

i need to send "test" regularly with a cronjob to 192.168.1.99:8000

currently the only solution i found was sheduling this script:
#!/bin/bash
echo "test" | netcat 192.168.1.99 8000 &
NETCATPID=$!
sleep 1
kill -s SIGINT $NETCATPID

it there a more beautiful solution to echo the ctrl-c directly after "test" ?
i also don't like the "sleep", which seems to be necessary
what if sending "test" takes longer?

thanks,
robert

0
robert_skywalker
Asked:
robert_skywalker
2 Solutions
 
Duncan RoeSoftware DeveloperCommented:
You could do what you want with "expect" http://sourceforge.net/projects/expect
Instead of using netcat, you would telnet 192.168.1.99 8000. If "test" gets a response, you could specifically wait for that response. Other wise wait fior a bit, send ^] to escape to telnet command processor, send q\r
Or just kill the telnet process (not so neat)
0
 
ahoffmannCommented:
> .. need to send "test" regularly
what is regulary?
should test be the URL-path or a part of the HTTP header? Is it HTTP anyway?
0
 
devrick0Commented:
I wrote something in python that checks a tcp host & port.  So if you throw this into a script, name it connect.py then you can run it like this:
./connect.py [host] [port]
(the usage statement will let you know if you don't have the correct number of arguments)
Example:
./connect.py 192.168.1.99 8000

#/usr/bin/python
import socket, sys

def try_conn_tcp():
        try:
                print "Attempting tcp connection on port %d" % (port)
                s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                s.connect((host, port))
                print "Connection to %s on port %d succeeded." % (host, port), "\n"
                sys.exit(1)
        except socket.error, e:
                print "\nTCP Socket Connection error : %s" % e, "\n"

if __name__=='__main__':
        usage = "\nUsage: connect.py [host] [port]\n"
        if len(sys.argv) < 3:
                print >> sys.stderr, usage
                sys.exit(1)
        host = sys.argv[1]
        textport = sys.argv[2]
        port = int(textport)
        try_conn_tcp()
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now