OpenVPN起動スクリプトがコマンドを実行しない

OpenVPN起動スクリプトがコマンドを実行しない

背景:私は刑務所(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を使用していないので、これを行う方法についての指示を提供することはできません。申し訳ありません。)

おすすめ記事