私はwgetコマンドをソケット経由でリモートサーバーに送信しています。ここで がクライアントコードです:サーバーでPythonでソケット経由で同期wgetコマンドを送信
import socket
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('192.168.1.16',12345))
s.send('wget http://url/file1')
print "file 1 OK"
s.send('wget http://url/file2')
print "file 2 OK"
s.send('wget http://url/file3')
print "file 3 OK"
s.close()
次のように、コードは次のとおりです。
#!/usr/bin/env python
import socket
import subprocess
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 12345))
s.listen(1)
conn, addr = s.accept()
while True:
data = conn.recv(1024)
cmd = ['/bin/sh', '-c', data]
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE).wait()
私は2つの問題を抱えています。サーバーに送信され
- 手順をグループ化されます。 3つの命令を有する代わりに、サーバは3つの命令の連結である1だけを受け取る。
- サーバが完了していない間に、すぐに「File n OK」が表示される。
ファイルごとにダウンロードが完了したら「OK」が表示されるようにするにはどうすればよいですか? ご協力いただきありがとうございます。
なぜwgetのではなく、純粋なのpython? – akira