コマンド (tracejob) をリモートで実行するために xinetd を使用しようとしています。telnet 経由で接続すると、すべて正常に動作します。残念ながら、私が作成したクライアントはサーバーからデータを受信していないようです。コードは次のようになります。
サーバ:
import sys
import commands
def main():
tjinput = sys.stdin.readline().strip()
(ret, out) = commands.getstatusoutput('/usr/bin/tracejob '+tjinput)
print out
sys.stdout.flush()
if __name__ == "__main__":
main()
クライアント:
host = 'xxx.xxx.xxx.xxx'
port = 12345
import socket
import sys
def main(argv):
message = 'hello'
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.connect((host, port))
sock.send(message)
data = sock.recv(1024)
sock.close()
print repr(data)
if __name__ == '__main__':
main(sys.argv)
クライアント プロセスは sock.recv(1024) 行で停止します。sock.recv がソケットからの出力を読み取っていない理由は、私の人生ではわかりません。おそらくコーディングの問題ですか?役に立った場合、xinetd.d ファイルは次のようになります。
service tracejob
{
flags = IPv4
disable = no
socket_type = stream
wait = no
user = root
group = root
server = /usr/local/bin/tracejob_xinetd.py
port = 12345
type = UNLISTED
}
ここで、tracejob_xinetd.py は上記のサーバーです。
任意のヒント?前もって感謝します。