Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> используем php для синхронизации по rsync через ss, используем php для синхронизации по rsync через ssh с ключам
saifuddin  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 14
Пользователь №: 38234
На форуме: 3 года, 1 месяц, 25 дней
Карма:




Доброго времени суток.
Помогите разобраться с настройкой PHP.
Есть команда rsync, для синхронизации файлов. Сейчас есть два сервера cs1 и cs2. на обоих стоят ssh ключи без паролей.
Если ввести в терминале команду

rsync -rvzat --delete -e 'ssh -p 8055 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'  /var/www/editor/user/  user@cs2:/var/www/editor/user/


То происходит синхронизация. Теперь мне нужно добиться этого при помощи PHP.


<?php
//echo "fff";
//system("cat /home/user/.ssh/id_rsa.pub", $result);
//echo system("ssh -i/home/user/.ssh/id_rsa.pub user@cs2 ls /", $result);

$connection = ssh2_connect('cs2', 22, array('hostkey'=>'ssh-rsa'));

if (ssh2_auth_pubkey_file($connection, 'user',
'/home/user/.ssh/id_rsa.pub',
'/home/user/.ssh/id_rsa', '')) {
echo "Public Key Authentication Successful\n";
} else {
echo "Public Key Authentication Failed";
die('Public Key Authentication Failed');
}

//$stream = ssh2_exec($connection, 'ls -l /');
$stream = ssh2_exec($connection, 'system("rsync -rvzat --delete -e $connection /var/www/editor/user/ user@cs2:/var/www/editor/user/", $result);');
stream_set_blocking($stream, true);
$stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);
echo stream_get_contents($stream_out);


Явно я что-то не так делаю. Помогите разобраться что нужно сделать, чтобы все заработало. Подключение по ключам происходит. Вот только выполнить команду не могу.

Я уже записал эту команду в баш скрипте и попробовал его запустить из терминала. Все работает. Но, если запускать через функцию system, то он не отрабатывает, потому, что там есть ssh. Без него он будет работать. Если rsync будет локально отрабатывать команду.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
saifuddin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 14
Пользователь №: 38234
На форуме: 3 года, 1 месяц, 25 дней
Карма:




Была опечатка в коде.

Вот правильный код. И он все еще не работает.


<?php 
$connection = ssh2_connect('cs2', 22, array('hostkey'=>'ssh-rsa'));

if (ssh2_auth_pubkey_file($connection, 'user',
'/home/user/.ssh/id_rsa.pub',
'/home/user/.ssh/id_rsa', '')) {
echo "Public Key Authentication Successful\n";
} else {

die('Public Key Authentication Failed');
}


$stream = ssh2_exec($connection, "rsync -rvzat --delete -e $connection /var/www/editor/user/ user@cs2:/var/www/editor/user/");
stream_set_blocking($stream, true);
$stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);
echo stream_get_contents($stream_out);
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
waldicom  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 6204
Пользователь №: 5552
На форуме: 8 лет, 4 месяца, 28 дней
Карма: 162




Была похожая проблема. Оказалось проблема в кавычках (в моем случае). Решилось созданием .sh файла и вызовом его из php (правда потом все равно переделал на вариант без php)


--------------------
Свои мозги еще никто не отменял.
Телепатов нету.
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса