我希望脚本在后台运行,通过SSH进入另一台计算机,运行tcpdump,生成一个pcap文件并将其保存到我的本地计算机。除了在后台运行时,所有这些工作都可以保存。
我已经研究了关于Stack Overflow(example)的几种解决方案,但是它们似乎不适用于我。诚然,我是bash的新手,因此完全有可能我没有正确阅读它们。
ssh root@ipaddress "tcpdump -c 400000 -s 0 -U -n -w - -i eth0 not arp" &>/dev/null &disown \ > /root/Destop/BashPcap/01Bash.pcap
答案 0 :(得分:1)
检查报价的结尾可能是问题所在...
或者您可以远程保存文件,然后使用scp(SecureCoPy)下载回来。 例如:
scp root@ipaddress:/path/to/file ~/Documents/path-where you-want-to-save.pcap
答案 1 :(得分:0)
据我了解您的任务,这就是您想要的:
nohup ssh root@ipaddress "tcpdump -c 400000 -s 0 -U -n -w - -i eth0 not arp" &> /root/Destop/BashPcap/01Bash.pcap &
简单地说:
nohup -它将允许您关闭终端,脚本将继续运行
ssh ... -这是要执行的命令
&> -将stdout和stderr都重定向到文件(Bash 4)
&-将命令发送到后台
注意:&>会将stdout和stderr都发送到文件,如果要在文件中包含tcpdump的摘要行,则需要此文件。它们被写到stderr:
N packets captured
X packets received by filter
Y packets dropped by kernel
如果不想使用这些行,则将stderr发送到/ dev / null
nohup ssh root@ipaddress "tcpdump -c 400000 -s 0 -U -n -w - -i eth0 not arp" 2>/dev/null > /root/Destop/BashPcap/01Bash.pcap &