无法让脚本在后台运行

时间:2019-04-12 13:37:23

标签: linux bash ssh tcpdump

我希望脚本在后台运行,通过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

2 个答案:

答案 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 &