在我的公司,一些命令可以使用sudo运行,比如tcpdump。 其他没有。
我期望运行tcpdump一段时间,然后停止它。 当我运行tcpdump时,我可以用Ctrl + C中止
我写了这样一个shell脚本 –
#!/bin/sh sudo tcpdump -ieth1 -w ~/dump.bin sleep 5 kill -2 $!
它并没有真正的工作。 tcpdump的进程是以root身份运行的,而当前用户是一个普通的账户。
如何使用sorting命令列出文件,但不是ls -lrt命令
从几个文件中计数重复
为什么我必须在我的容器中使用bash -l -c?
将string拆分成bash中的数组
我的问题是:有什么办法可以做相当于bash脚本中的Ctrl c?
编辑:
ps:作为我公司的安全策略,我不能以root身份运行kill。
如何在单引号包围的awk语句中使用单引号?
如何grep文本的小错误
检查string是否与指定的date格式相匹配
从arg提供的date计算第二天的date的技术?
bash cron群屏幕
试试tcpdump的-Z选项。 它指示tcpdump删除root权限,并以参数中指定的用户身份运行。
sudo tcpdump -Z $USER -ieth1 -w ~/dump.bin
现在尝试杀死这个过程。
简单地通过sudo运行kill :
sudo kill -2 $!
这样kill过程将有权将信号发送到以root身份运行的进程。
超时命令也会在这么长时间后终止程序。 sudo timeout 5 tcpdump -ieth1 -w ~/dump.bin应该完成与脚本相同的操作。
sudo tcpdump -Z root -w ~/dump.bin -n -i eth0 -G 300 -W 1
G – 超时秒(超时后comman被自动杀死)Z – 删除root并以用户权限运行W – 要保存的号码文件(作为分割文件)
sudo tcpdump -ieth1 -w ~/dump.bin
会阻止你的脚本,你需要把它放到后台:
sudo tcpdump -ieth1 -w ~/dump.bin &
。
这和Blagovest的答案应该做到这一点。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。