스크립트를 실행하는 데 문제가 있습니다.스크립트가 ssh를 통해 로컬에 저장되지 않습니다.
이 명령 줄에서 완벽하게 작동합니다 :이 스크립트를 사용하는 경우에는
ssh [email protected] /usr/sbin/tcpdump -i eth0 -w - | /usr/sbin/tcpdump -r - -w /home/cuckoo/cuckoo/storage/analyses/1/saveit.pcap
! #을 그것은 원격에 모두 tcpdump를 프로세스를 생성합니다
import sys
import os
import subprocess
cmd = []
remote_cmd = []
local_cmd = []
connect_cmd = []
outfile = None
try:
connect_cmd = str.split(os.environ["RTCPDUMP_CMD"], " ")
except:
connect_cmd = str.split("ssh [email protected]", " ")
remote_cmd.extend(str.split("/usr/sbin/tcpdump -w -", " "))
local_cmd.extend(str.split("/usr/sbin/tcpdump -r -", " "))
for argument in xrange(1, len(sys.argv)):
if sys.argv[argument] == "-w":
outfile=sys.argv[argument+1]
sys.argv[argument] = None
sys.argv[argument+1] = None
if sys.argv[argument] == "-i":
remote_cmd.append(sys.argv[argument])
remote_cmd.append(sys.argv[argument+1])
sys.argv[argument] = None
sys.argv[argument+1] = None
if not sys.argv[argument] == None:
if " " in sys.argv[argument]:
local_cmd.append("'" + sys.argv[argument] + "'")
remote_cmd.append("'" + sys.argv[argument] + "'")
else:
local_cmd.append(sys.argv[argument])
remote_cmd.append(sys.argv[argument])
if not outfile == None:
local_cmd.insert(1, "-w")
local_cmd.insert(2, outfile)
cmd.extend(connect_cmd)
cmd.extend(remote_cmd)
cmd.append("|")
cmd.extend(local_cmd)
try:
subprocess.call(cmd)
except KeyboardInterrupt:
exit(0)
는/usr/빈/ENV 파이썬 호스트가되고 두 번째 tcpdump가 작동하지 않는 경로로 인해 저장되지 않습니다. 나는 마지막에 print cmd를 추가했고 프롬프트에 전달되는 ssh 명령은 똑같습니다 (스크립트 자체를 실행할 때 뻐꾸기는 스크립트를 호출 할 때 많은 옵션을 전달합니다. 또한 -w 전에 - 내가 eth0,하지만 난 그것을 테스트하고 그것은뿐만 아니라 명령 줄에서 작동).
그래서 완전히 왜곡되었습니다. 왜 파이프가 로컬에서는 스크립트에서 작동하지 않지만 프롬프트에서는 작동합니까?
아, 그리고 스크립트의 신용 그래서 내가 철저하게 난처한 상황에 빠진 http://blog.michaelboman.org/2013/02/making-cuckoo-sniff-remotely.html
매우 읽을 수없는 명시 적'self'와 str.split''같은 언 바운드 메서드를 호출; "str.split ("ssh root @ fw "," ")'대신''ssh root @ fw".split ("")이 아닌 왜? 또한, 왜'split()'대신에'split ("")'을 사용해야합니까? (정말로, 아마도 shlex.split을 원할 것입니다. 언젠가는 당신이 어딘가에 인용 된 인수를 추가 할 것이고'str.split'이 잘못된 것을 할 것이기 때문입니다 ...) – abarnert
그래, 솔직히 말해서 나는 이제 막 시작하고있다. 파이썬 배우기. 이 스크립트를 발견하고 내가 설정했던 실험실 환경에 맞도록 실행하려고했습니다. –