背景:私は刑務所(FreeNAS 11.1プラグイン刑務所)でTransmission(v2.93)とOpenVPN(v2.4.6)を設定しており、プログラムを--up
使用してTransmissionのリスニングポートを変更するように要求するスクリプトをOpenVPNに追加したいと思います。transmission-remote
私のエントリopenvpn.conf
には以下が含まれます。
verb 4
script-security 2
up /usr/local/etc/openvpn/set_port.sh
up-restart ;only to make the up script be executed on restarts
;but disabling this changes nothing
そしてset_port.sh
スクリプトには以下が含まれます(動作を再現する最小スクリプト)。
#!/usr/local/bin/bash
/usr/local/bin/transmission-remote --auth rpc_user:rpc_pass -p 6666 2>&1 > output.txt
echo 'the script itself runs: '$(pwd) $(whoami) > status.txt
スクリプトにはすべての権限(777)があり、バイナリ(transmission-remote
)にはすべての権限があります。バイナリパスが実際にはソフトリンクであることを知って実際のパス( )に置き換えたが/usr/pbi/transmission-amd64/.sbin/transmission-remote
、観察した動作は同じです。
質問:OpenVPN()を起動するとservice openvpn start
、スクリプト自体実行されましたが、実際のコマンドが奇妙に失敗しました。ポートが割り当てられていません(次を見て確認)。リモートグラフィカルユーザーインターフェース転送そして、このコマンドは空の出力を生成します。
デバッグファイルの内容は次のとおりです。空
output.txt
(含まれているか除く)標準エラーリダイレクト)
status.txt
期待通りに言います:the script itself runs: /usr/local/etc/openvpn root
。
ただし、このスクリプトを手動で実行すると(./set_port.sh
)コマンドは正常に完了します。次のようにoutput.txt
話し、localhost:9091/transmission/rpc/ responded: "success"
ポートが変更されます。
私は何を見逃していますか?
似たような到着この問題、「許可されていません」というメッセージが表示されないことを除いて、コマンドは実行されていないようです(実行すると空のファイルがecho $(<that command>) > file.txt
表示されます)。
これまた、やや関連していますが、OPは--client-connect
実行したいプログラムのフルパスを作成して問題を要求し、最終的に解決しました。これは私の場合には役に立ちませんでした(しかし、そうすればecho $(ls /usr/local/bin) > log.txt
バイナリリストは正しいでしょう)。
修正する@roaimaのリクエストに応じて。私はそれをset_port.sh
次のように変更しました:
#!/usr/local/bin/bash
exec >debug.txt 2>&1
set -x
echo script is running
/usr/pbi/transmission-amd64/.sbin/transmission-remote --auth rpc_user:rpc_pass -p 6666 2>&1 > output.txt
その後、すすぎ、繰り返します。ファイルdebug.txt
には次の行が含まれています。
+ echo script is running
script is running
+ /usr/pbi/transmission-amd64/.sbin/transmission-remote --auth rpc_user:rpc_pass -p 12345
/usr/local/etc/openvpn/test.sh: line 5: 6795 Segmentation fault /usr/pbi/transmission-amd64/.sbin/transmission-remote --auth rpc_user:rpc_pass -p 12345 2>&1 > output.txt
ベストアンサー1
行を見て
/usr/local/etc/openvpn/test.sh: line 5: 6795 Segmentation fault /usr/pbi/transmission-amd64/.sbin/transmission-remote --auth rpc_user:rpc_pass -p 12345 2>&1 > output.txt
実行可能ファイルのライブラリが一致しないようです。 chrootをどのように構築したかをもう一度確認してください。 (私は何年もFreeBSDを使用していないので、これを行う方法についての指示を提供することはできません。申し訳ありません。)