PHP ssh2_exec, выполняющий несколько команд одновременно

Я использую ssh2_exec для выполнения нескольких команд из PHP на своих серверах CentOS, и я использовал его много раз, но сегодня, когда я попытался заставить его выполнять 4 или 5 команд одновременно с помощью &&, это не сработало. Вот код ниже:

if (!($stream = ssh2_exec($con, 'cp -rf /home/shared/Tekkit_Server_3.1.2.zip /home/servers2/'.$mUsername.' && unzip /home/servers2/'.$mUsername.'/Tekkit_Server_3.1.2.zip && rm -rf /home/servers2/'.$mUsername.'/mods/mod_NetherOres.jar && mv -f /home/servers2/'.$mUsername.'/Tekkit.jar /home/servers2/'.$mUsername.'/craftbukkit.jar'))) {
    echo "fail: unable to execute command\n";
}

Он копирует ZIP в нужный каталог, но ничего оттуда не делает, есть идеи?

Спасибо!

ИЗМЕНИТЬ

Я пытался сделать просто:

 if (!($stream = ssh2_exec($con, 'unzip /home/servers2/'.$mUsername.'/Tekkit_Server_3.1.2.zip'))){
                        echo "fail: unable to execute command\n";
 }

и он вернул: сбой: невозможно выполнить команду

Другие команды работают нормально, и когда я запускаю команду в терминале, она работает нормально.


person Jeremy Sayers    schedule 14.11.2012    source источник
comment
Посмотрите, поможет ли это: php.net/manual/en/function .ssh2-exec.php#59324   -  person rws907    schedule 15.11.2012
comment
Кажется, не сработало, используя этот метод. Я даже только что попытался разделить их на отдельные команды с помощью sleep(5); между каждым, и это не сработало.   -  person Jeremy Sayers    schedule 15.11.2012
comment
Можете ли вы вывести результаты в журнал на целевой машине, а затем посмотреть, где произошел сбой?   -  person rws907    schedule 15.11.2012
comment
Это определенно не удается с распаковкой, но нет ошибки, на данный момент я только что распаковал файл на сервере и копирую его, но, думаю, это только временное исправление.   -  person Jeremy Sayers    schedule 15.11.2012


Ответы (1)


Я проверил ваш пример, и похоже, что он работает, если вы укажете опцию -d для команды unzip и укажете каталог, в который следует распаковать файл:

if (!($stream = ssh2_exec($con, 'unzip /home/servers2/'.$mUsername.'/Tekkit_Server_3.1.2.zip -d /home/servers2/'.$mUsername))){
    echo "fail: unable to execute command\n";
}
person pn8830    schedule 14.11.2012