OpenWRT構成用のWebフロントエンドを作成しています。私はPHPを使用してコマンドを実行しており、すべてのuciコマンドが正しく実行されています。ただし、OpenVPN構成はUCIを介して行うことはできず、構成ファイルに直接Unixコマンドを使用する必要があります。
このコマンドは私の端末ではうまく機能しますが、PHPでは機能しません。
shell_exec(" cd /etc/openvpn && sed -i '2s/.*/remote 5-nl.cg-dialup.net 443/' openvpn.ovpn && cd'");
shell_exec(" cd /etc/openvpn && sed -i '30s/.*/ca /etc/openvpn/Nethelands/ca.crt/' openvpn.ovpn && cd'");
shell_exec(" cd /etc/openvpn && sed -i '32s/.*/cert /etc/openvpn/Nethelands/client.crt/' openvpn.ovpn && cd'");
shell_exec(" cd /etc/openvpn && sed -i '34s/.*/key /etc/openvpn/Nethelands/client.key/' openvpn.ovpn && cd'");
PHPを使用して上記のタスクを実行するには?シェルスクリプトを作成する必要がありますか、またはuhttpd権限を変更する必要がありますか?
私はOpenwrt Chaos chill uhttpd WebサーバーでPHPを実行しています。ラズベリーパイ2
答え1
おおよその推測:
- 許可が拒否されました。
/etc
一般ユーザーは通常ファイルを変更できません。特にhttpdのようなWebユーザーはさらにそうです。そのために走ってchmod -R +w /etc/openvpn
穴を開けたり、何かをしてくださいchown
。 sed
コマンドが無効です。コマンド 2-4 には複数のスラッシュが表示されます。s
スラッシュは後に続くので、スラッシュはオペランドの区切り文字として機能し、あまりにもsed
多くの無効なオペランドとは機能しません。 sedコンテンツを次に変更してください。<?php /* For Syntax */ // cd avoided. shell_exec("sed -i.php_sed_bak ". "-e '2s@.*@remote 5-nl.cg-dialup.net 443@' ". "-e '30s@.*@ca /etc/openvpn/Nethelands/ca.crt@' ". "-e '32s@.*@cert /etc/openvpn/Nethelands/client.crt@' ". "-e '34s@.*@key /etc/openvpn/Nethelands/client.key@' ". "/etc/openvpn/openvpn.ovpn"); ?>