Skip to content

Instantly share code, notes, and snippets.

@rndmcnlly
Created December 16, 2009 01:18
Show Gist options
  • Save rndmcnlly/257489 to your computer and use it in GitHub Desktop.
Save rndmcnlly/257489 to your computer and use it in GitHub Desktop.
#!/usr/bin/python
import socket
import subprocess
import sys
try:
HOST = sys.argv[1]
PORT = int(sys.argv[2])
except:
print 'usage: ', sys.args[0], 'HOSTNAME', 'PORT'
bucket = open('/dev/null')
def run(cmd):
try:
p = subprocess.Popen(
cmd,
stdin=bucket,
stderr=bucket,
stdout=bucket,
close_fds=True,
shell=True)
p.wait()
return p.returncode
except OSError, e:
print '#!', e
return -1
print '# connecting to', HOST, PORT
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.connect((HOST,PORT))
except socket.error, msg:
print '#!', msg
sys.exit(-1)
print '# connected'
buffer = ""
running = True
while running:
while not "\n" in buffer and running:
moar = s.recv(1024)
if not moar: running = False
buffer += moar
parts = buffer.split("\n")
buffer = parts[-1]
cmds = parts[:-1]
for cmd in cmds:
print cmd
ret = run(cmd)
print '#', ret
s.sendall("%d\n" % ret)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment