我在 Ubuntu 16.04 上运行 Security Onion。昨天(2019 年 6 月 9 日),一些主要服务(SGUIL、PCAP、Snort)停止工作。在每个服务的日志中,我找到以下条目:
/usr/bin/{service name}_agent.tcl: line 3: exec: tclsh: not found
我在以下日志中看到上述消息:
pcap_agent.log
snort_agent.log
squild.log
上述每个日志都引用了 /usr/bin 目录中的关联 .tcl 文件(即 pcap_agent.tcl、snort_agent.tcl 和 sguild)。每个文件的最顶部都有以下三行:
#!/bin/sh
# Run tcl from users PATH \
exec tclsh "$0" "$@"
我发现一个论坛页面建议 tcl 版本太旧,需要使用命令进行更新sudo apt-get install tcl
。但是,当我运行该命令进行更新时,它显示 tcl 已经是最新版本 (8.6.0+9)。
这是我第一次接触.tcl 文件,因此我正在即时研究/学习,并且在互联网、论坛等上广泛研究了这个错误,但还没有找到任何有用的信息。
有谁能帮我吗?这影响了我们的生产机器,我需要修复它。如果需要,我可以提供日志文件等。
提前谢谢你,Jeff S。
答案1
该exec tclsh
片段告诉您在环境变量中的每个目录中$SHELL
查找。检查您的: tclsh
$PATH
$PATH
echo "$PATH" | tr ":" "\n"
tclsh
是/usr/bin/tclsh
,所以/usr/bin
必须在您的 中才能$PATH
找到exec tclsh
它。
tclsh
包装内容tcl
:
walt@fox:~(0)$ type -p tclsh
/usr/bin/tclsh
walt@fox:~(0)$ dpkg -S $(type -p tclsh)
tcl: /usr/bin/tclsh
walt@fox:~(0)$ dpkg -L tcl
/.
/usr
/usr/share
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/doc
/usr/share/doc/tcl
/usr/share/doc/tcl/README.Debian
/usr/share/doc/tcl/changelog.gz
/usr/share/doc/tcl/copyright
/usr/share/man
/usr/share/man/man1
/usr/bin
/usr/share/man/man1/tclsh.1.gz
/usr/bin/tclsh
您可以tcl
使用以下命令重新安装该包:
sudo apt-get install --reinstall tcl