私は仕事に取り組んでいます。今、私はそれを実行しているコマンドへのアクセスを与えるローカルマシン上のポートを開くためのスクリプト(この1つ)をセットアップしようとしています。私はそれに接続するためにNetcatを使用しています。今すぐnetcatに接続できるようになり、1つのコマンドを入力すると出力と停止が得られます。 whileループの外側で "conn、addr = s.accept()"を動かすと、私は何度も何度もコマンドを何度もやり直すことができます。しかし、私が "cd .."を実行してディレクトリを戻そうとすると、それは私に許されません。私は何かが欠けているかどうかはわかりませんでした。 cd ..
が動作しないのはなぜソケットを使ってPythonサーバーにコマンドを繰り返すには?
host = ''
port = 12345
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print("Socket has been created.")
try:
s.bind((host, port))
except socket.error:
print("Bind failed.")
sys.exit()
print("Socket bind complete.")
s.listen(5)
print("Socket is now listening.")
while 1:
conn, addr = s.accept()
print("Connected with {0}:{1}".format(addr[0], addr[1]))
data = conn.recv(1024)
string_data = data.decode('utf-8')
proc = subprocess.Popen(string_data, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
stdin=subprocess.PIPE)
stdout_value = proc.stdout.read() + proc.stderr.read()
conn.sendall(stdout_value)
#conn.close()
#s.close()
シェルを一度起動して話をしたいと思います。しかし、これを行う方法がわかりません。正しい方向に私を置くことができるヒント? – sqlsqlsql