
私は Ubuntu 16.04 で Security Onion を実行しています。いくつかの主要なサービス (SGUIL、PCAP、Snort) が昨日、2019 年 6 月 9 日に動作を停止しました。これらの各サービスのログに次のエントリが見つかりました。
/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) を参照します。これらの各ファイルには、ファイルの先頭に次の 3 行があります。
#!/bin/sh
# Run tcl from users PATH \
exec tclsh "$0" "$@"
あるフォーラム ページでは、tcl のバージョンが古いため、sudo apt-get install tcl
コマンドを使用して更新する必要があると説明されていました。しかし、そのコマンドを実行して更新すると、tcl はすでに最新バージョン (8.6.0+9) であると表示されます。
.tcl ファイルに触れるのは今回が初めてなので、その場で調査/学習しており、インターネットやフォーラムなどでこのエラーを徹底的に調査しましたが、まだ役立つ情報は見つかっていません。
どなたか助けていただける方はいらっしゃいませんか? これは私たちの生産マシンに影響を与えているので、これを修正する必要があります。必要であればログ ファイルなどを提供できます。
よろしくお願いします、ジェフ・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