Introduction¶
Sometimes it is desirable for an external process to be able to send commands to Squish for Squish to execute.
Here is a basic example of a Squish test script that can receive commands from a socket and execute them.
⚠️ Be aware that using Python's _exec()_
command is intrinsically insecure (since it will try to execute any Python code it is given), so this script should only be used behind a firewall.
import socket
import sys
def main():
host = ""
port = 50000
backlog = 5
size = 1024
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind((host, port))
sock.listen(backlog)
while True:
client, address = sock.accept()
test.log("Client connected.")
while True:
data = client.recv(size).rstrip()
if not data:
continue
test.log("Received command: %s" % data)
if data == "disconnect":
test.log("Client disconnected.")
client.send(data)
client.close()
break
if data == "exit":
test.log("Client asked server to quit")
client.send(data)
client.close()
return
test.log("Executing command: %s" % data)
try:
exec(data)
except Exception, err:
test.log("Error occured while executing command: %s" % (
data), str(err))