У меня есть простой веб-скрипт php, который запускает скрипт bash
<?php
if(isset($_POST['submit']))
{
$output=shell_exec('sh /usr/lib/cgi-bin/script.sh');
echo $output;
}
?>
<form action="" method="post">
<input type="submit" name="submit" value="Call my Shell Script">
</form>
Я пробовал в скрипте простые команды, такие как переименование и касание, и это, казалось, работало нормально
Ключи rsa настроены, и rsync работает с терминала, но я получаю следующее:
Host key verification failed.^M
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.1]
Could not create directory '/var/www/.ssh'.^M
Host key verification failed.^M
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.1]
Содержание сценария:
rsync -azv -e 'ssh -p 2222' /home/downloads/ user@ip:/home/downloads
Я могу ошибаться, но это, похоже, проблема с разрешением?
Ваша проблема связана с «Ошибка проверки ключа хоста».
Сценарий выполняется с вашим пользователем www (apache, www-data, …).
В вашем / etc / passwd вы, вероятно, определили домашний каталог этого пользователя для / var / www.
Если этот пользователь не имеет разрешения в этом каталоге, он не может создать папку .ssh хранить ключ хоста удаленного компьютера.
Итак, вы можете вручную создать папку:
sudo mkdir /var/www/.ssh
sudo chmod 600 /var/www/.ssh
sudo chown <your-www-user> .ssh
Это первый шаг, но rsync все равно потерпит неудачу, потому что вам нужно принять ключ удаленного хоста.
Итак, второй шаг — подключиться с помощью SSH к удаленному хосту. получить ключ удаленного хоста :
su - <your-www-user>
ssh -p 2222 user@ip
Третья проблема, логин. вам следует настроить SSH-соединение для каждого ключа чтобы избежать необходимости вводить пароль при каждом подключении (в любом случае ваш rsync не будет работать).
Итак, чтобы сгенерировать ключ ssh:
su - <your-www-user>
ssh-keygen -t rsa
Скопируйте ваш открытый ключ ssh на удаленный хост:
su - <your-www-user>
ssh-copy-id user@ip
Это должно делать свое дело.
Других решений пока нет …