Linux上执行Tcl脚本与Tcl环境下执行脚本,还是有些区别的。(Tcpdump命令)

 

因为工作任务,需要写一个Tcpdump 来显示包的一个脚本。

脚本内容如下:

#!/usr/local/ActiveTcl/bin/tclsh

set package [ exec tcpdump -i eth0 -c 2]

puts $package

# end

在Linux环境下执行结果如下:

root@Server:~/wendh/test# ./tt2.tcl
15:35:27.343648 IP 11.1.1.2 > 22.1.1.2: ICMP echo request, id 60437, seq 32, length 64
15:35:27.343657 IP 22.1.1.2 > 11.1.1.2: ICMP echo reply, id 60437, seq 32, length 64
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
/etc/host.conf: line 1: bad command `Server'
2 packets captured
4 packets received by filter
0 packets dropped by kernel
  while executing
"exec tcpdump -i eth0 -c 2"
  invoked from within
"set a [exec tcpdump -i eth0 -c 2]"
  (file "./tt2.tcl" line 3)

root@Server:~/wendh/test#

而在Tcl环境下执行结果如下:

root@Server:~/wendh/test# tclsh
% source tt2.tcl  
15:37:16.344411 IP 11.1.1.2 > 22.1.1.2: ICMP echo request, id 60437, seq 141, length 64
15:37:16.344420 IP 22.1.1.2 > 11.1.1.2: ICMP echo reply, id 60437, seq 141, length 64
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
/etc/host.conf: line 1: bad command `Server'
2 packets captured
4 packets received by filter
0 packets dropped by kernel

% exit
root@Server:~/wendh/test#

想了很长时间。。也不明白为什么会这样。。会抛出异常。

经朋友提示。。将脚本修改了一下。如下:


#! /usr/local/ActiveTcl/bin/tclsh
catch {exec tcpdump -i eth0 -c 2 } package
puts $package

这样在Linux环境下就不会出现异常。。

如果各位有谁知道为什么会这样。。请给我留言!!!谢谢!!




  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
tcpdump 是一个在命令行下运行的网络数据包分析工具。它可以捕获网络接口上的数据包,并显示其详细信息,帮助用户进行网络故障排查、安全分析等。 使用 tcpdump 命令的基本语法如下: ``` tcpdump [选项] [表达式] ``` 其中,选项用于指定 tcpdump 的一些行为,常用的选项包括: - `-i <interface>`:指定要监听的网络接口,例如 `-i eth0` 表示监听 eth0 网络接口的数据包。 - `-n`:禁用 IP 地址和端口号的解析。使用该选项可以加快 tcpdump 的运行速度。 - `-s <snaplen>`:设置要捕获的数据包的最大长度。默认情况下,tcpdump 会捕获完整的数据包。可以使用该选项限制捕获的数据包长度,以减少对存储资源的占用。 - `-c <count>`:设置捕获数据包的数量上限。 - `-w <file>`:将捕获的数据包写入指定的文件中,而不在标准输出中显示。 表达式用于过滤要捕获的数据包,可以根据协议类型、源/目标 IP 地址、端口号等进行过滤。例如,`tcpdump tcp port 80` 表示只捕获目标端口号为 80 的 TCP 数据包。 除了上述选项和表达式外,tcpdump 还支持其他一些高级用法,如设置捕获的数据包数量、限制捕获时长等。 请注意,在使用 tcpdump 进行网络数据包分析时,需要具有足够的权限。通常需要以 root 用户或使用 sudo 命令来运行 tcpdump。 希望以上信息能对你有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lannyjay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值