ПРОБЛЕМА: Эхо из bash-файла не распознается PHP. Echo — это имя файла, которое отправляется обратно на веб-сервер для перенаправления.
Это работает так:
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 (не веб-сервер):
#!/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
;;
Задача ещё не решена.
Других решений пока нет …