-e: specify filename to exec after connect#

Warning

Please BE CAREFUL with this functionality as it could expose your system to attackers.
Also, please DO NOT use this functionality for evil purposes.

pync can execute a process and connect the process’ stdin/stdout/stderr to the network socket.

Any data that comes in from the network will go to the process’ stdin, and any data that comes out from the process’ stdout/stderr will be sent out to the network.

There are two options that can provide this functionality, the -e option and the -c option.

Running a Command With -e#

The -e option takes the full pathname of a command to execute, along with any arguments.

  1. Create a local server that sends “Hello” to the first client that connects:

pync -vle "/bin/echo Hello" localhost 8000
py -m pync -vle "echo Hello" localhost 8000
import platform
import pync

cmd = '/bin/echo Hello'
if platform.system() == 'Windows':
    cmd = 'echo Hello'

pync.run('-vle "{}" localhost 8000')
  1. Connect to the Hello server to see the message:

pync -v localhost 8000
py -m pync -v localhost 8000
import pync
pync.run('-v localhost 8000')

Running a Command With -c#

The -c option is the same as the -e option but allows extra shell features such as pipelines and evironment variable expansion.

  1. Create a local server that sends the current working directory to the first client that connects:

pync -vle "/bin/echo `pwd`" localhost 8000
py -m pync -vle "echo %cd%" localhost 8000
import platform
import pync

cmd = '/bin/echo `pwd`'
if platform.system() == 'Windows':
    cmd = 'echo %cd%'

pync.run('-vle "{}" localhost 8000')
  1. Connect to the server to receive the server’s current working directory:

pync -v localhost 8000
py -m pync -v localhost 8000
import pync
pync.run('-v localhost 8000')


SEE ALSO: