extend
特定のOIDの一部のスクリプトを呼び出すディレクティブを使用してsnmpdを拡張しています。スクリプト自体はカスタムヘルパーを呼び出していくつかの値を抽出します。コマンドラインから手動で起動すると、ヘルパーは正しく実行されますが、スクリプトから呼び出すと失敗するため、機能しません/cots/boost-1.55/lib
。実行後、ブーストライブラリがキャッシュにあることを確認し/cots/boost-1.55/lib
ました。スクリプトにはデフォルトで次のものが含まれます。/etc/ld.conf.d/cots.conf
ldconfig
result=`callHelper with arguments`
echo $result
結果はsnmpdによってキャプチャされ返されます。 OIDを照会すると、外部ブーストライブラリが見つからないというエラーが発生します。
su user
スクリプトを呼び出して動作させることができました。
result=`su user "callHelper with arguments"`
echo $result
ldキャッシュを使用するときは正確ですsu
が、スクリプトで直接書くときにそうでない理由を説明できる人はいますか?私はこれがldconfig
システムサービスであるsnmpdと関係があると思うので、環境は異なりますが、環境の一部ではありません。
答え1
ライブラリが検索パスにあることを確認してください。 TERMで次のコマンドを実行してグローバルパスを確認します。パスは.profile
非構成を使用して設定されます。
echo $PATH$
検索パスを表示します。ライブラリを検索パスに明示的に追加するには、用語「set」コマンドを使用します。ドル記号は、これがシェルへのグローバル呼び出しであることを示します。努力する
set PATH=$PATH$;/cots/boost-1.55/lib
セミコロンはシェルに新しい検索パスを開始するように指示します。ただし、これは検索パスが存在する場合にのみ機能します。もちろんそれは私のコンピュータから分岐しました。
set PATH=$PATH$;/cots/boost-1.55/lib
bash: /cots/boost-1.55/lib: -forks No such file or direc
保守党!