问题:来自bash文件的回声不能识别PHP。 echo是文件名,并被发送回Web服务器以进行重定向。
它的工作原理如下:
访问网站上的PHP文件并运行此代码:
<?php
$output=shell_exec("sshpass -p [serverpass] ssh root@[serverip] 'sh
/var/www/[bashfile].sh'");
$vpn="http://[serverip]/".$output.".ovpn";
$string = trim(preg_replace('/\s+/', '', $vpn));
header('Location: '.$string);
?>
当我跑步时
sshpass -p [serverpass] ssh root@[serverip] 'sh /var/www/auto.sh'
在网络服务器上的bash中,它运行回声。但是,当使用php [filename].php
执行时,它不会。
这是服务器上的bash代码w / bash(不是webserver):
#!/bin/sh
newclient () {
if [ -e /home/$1 ]; then
homeDir="/home/$1"
elif [ ${SUDO_USER} ]; then
homeDir="/home/${SUDO_USER}"
else
homeDir="/root"
fi
cp /etc/openvpn/client-template.txt $homeDir/$1.ovpn
echo "<ca>" >> $homeDir/$1.ovpn
cat /etc/openvpn/easy-rsa/pki/ca.crt >> $homeDir/$1.ovpn
echo "</ca>" >> $homeDir/$1.ovpn
echo "<cert>" >> $homeDir/$1.ovpn
cat /etc/openvpn/easy-rsa/pki/issued/$1.crt >> $homeDir/$1.ovpn
echo "</cert>" >> $homeDir/$1.ovpn
echo "<key>" >> $homeDir/$1.ovpn
cat /etc/openvpn/easy-rsa/pki/private/$1.key >> $homeDir/$1.ovpn
echo "</key>" >> $homeDir/$1.ovpn
echo "key-direction 1" >> $homeDir/$1.ovpn
echo "<tls-auth>" >> $homeDir/$1.ovpn
cat /etc/openvpn/tls-auth.key >> $homeDir/$1.ovpn
echo "</tls-auth>" >> $homeDir/$1.ovpn
}
var=`date +%s%N`
cd /etc/openvpn/easy-rsa/
./easyrsa build-client-full $var nopass
newclient "$var"
mv ~/$var.ovpn /var/www/$var.ovpn
echo "$var"
exit
;;