Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: ssh соединение

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Terman
Отправлено: 20 Ноября, 2011 - 19:16:44
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Всем привет, мне нужно написать небольшой скриптик создания папки и запуска из него скрипта и все это через ssh ,Примерно знаю как сделать но что то не получается... может чего не устанавливаю или что не знаю..

Сервер: Centos 5.5 c установленным openssh-server и LAMP сервером не каких модов на пхп больше не ставил... и не знаю что делать код вроде правильный написал по идеи все должно работать.. но увы папку не создает.. такое чувство что чего то в пхп не хватает... можите подсказать что делать????

либо я не понял как правильно пользоваться данным классом:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. class ssh
  3. {
  4.         private $host; // Host of serverr
  5.         private $port; // Port of server
  6.         private $user; // User fpr server
  7.         private $pass; // Password for server
  8.         private $connection = false; // Connection resourse
  9.         private $error = false; // Last error
  10.         private $result = ""; // Result of command executing
  11.         private $timeOut = 10; // Time out of command executing
  12.         public function __construct($host, $user, $pass, $port = 22){
  13.                 $this->host = $host;
  14.                 $this->user = $user;
  15.                 $this->pass = $pass;
  16.                 $this->port = $port;
  17.                 if($host == sshData::$host && $user == sshData::$user){
  18.                         $this->connection = sshData::$connect;
  19.                         $result = true;
  20.                 }else{
  21.                         sshData::$host = $host;
  22.                         sshData::$user = $user;
  23.                         $result = $this->connect();
  24.                         sshData::$connect = $this->connection;
  25.                 }
  26.                 return $result;
  27.         }
  28.         // Execute some command
  29.         public function exec($command){
  30.                 /*
  31.                 $steam = ssh2_exec($this->connection,$command); return true;
  32.                 $timeStart = time();
  33.                 $this->result = "";
  34.                 stream_set_blocking($stream,$true);    
  35.                 while(strlen($this->result) == 0){
  36.                         $this->result .= fread($stream,4096);
  37.                         if(strlen($this->result) > 0)return true;
  38.                         elseif((time() - $timeStart) > $this->timeOut){
  39.                                 $this->error = "Warning: Timeout of command executing has been reached";        
  40.                                 return false;
  41.                         }
  42.                 }
  43.                
  44.                 //
  45.                 $r = rand(0,100000);
  46.                 $fi = @file_get_contents("data/data1");
  47.                 $f = @fopen("data/data1","w");
  48.                 @fwrite($f,$fi.$command."; echo \"{__EXECUTING_FINISHED__".$r."}\"".";\n");
  49.                 @fclose($f);
  50.                 */
  51.                 if(!($stream = ssh2_exec($this->connection,$command."; echo \"{__EXECUTING_FINISHED__".$r."}\""))){
  52.                         $this->error = "Warning: Unable to execute command";
  53.                         return false;  
  54.                 }else{
  55.                         $timeStart = time();
  56.                         $this->result = "";
  57.                         stream_set_blocking($stream,true);     
  58.                         while(true){
  59.                                 $this->result .= fread($stream,4096);
  60.                                 if(strpos($this->result,"{__EXECUTING_FINISHED__".$r."}") !== false){
  61.                                         fclose($stream);
  62.                                         return true;
  63.                                 }elseif((time() - $timeStart) > $this->timeOut){
  64.                                         $this->error = "Warning: Timeout of command executing has been reached";
  65.                                         fclose($stream);       
  66.                                         return false;
  67.                                 }
  68.                         }
  69.                 }
  70.                
  71.         }
  72.         // Return  last result
  73.         public function result(){
  74.                 return $this->result;  
  75.         }
  76.         // Return last error
  77.         public function error(){
  78.                 return $this->error;   
  79.         }
  80.         // Sending file to server
  81.         public function f2s($localePath,$serverPath){
  82.                 return ssh2_scp_send($this->connection,$localePath,$serverPath,0766);
  83.         }
  84.         // Getting file from server
  85.         public function s2f($serverPath,$localePath){
  86.                 return ssh2_scp_recv($this->connection,$serverPath,$localePath);                       
  87.         }
  88.         // Connect to the server
  89.         private function connect(){
  90.                 if(!function_exists("ssh2_connect")){
  91.                         $this->error = "Fatal error: SSH lib doesn't exist";
  92.                         return false;
  93.                 }else{
  94.                         $this->connection = ssh2_connect($this->host,$this->port);
  95.                         if(!$this->connection){
  96.                                 $this->error = "Fatal error: Unable to establish connection";
  97.                                 return false;          
  98.                         }else{
  99.                                 if(!ssh2_auth_password($this->connection,$this->user,$this->pass)){
  100.                                         $this->error = "Fatal error: Unable to authenticate";
  101.                                         return false;          
  102.                                 }else return true;
  103.                         }
  104.                 }              
  105.         }
  106. }
  107. class sshData
  108. {
  109.         static $user;
  110.         static $host;
  111.         static $connect;
  112. }
  113. ?>


Если можно объясните....

(Отредактировано автором: 20 Ноября, 2011 - 19:20:46)

 
 Top
Данил_123
Отправлено: 20 Ноября, 2011 - 20:19:32
Post Id


Участник


Покинул форум
Сообщений всего: 1026
Дата рег-ции: Июнь 2011  
Откуда: rostov


Помог: 9 раз(а)




ssh-клиент а так почему бы не mkdir


-----
http://mysitecost.ru
 
 Top
Terman
Отправлено: 20 Ноября, 2011 - 21:16:59
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Зачем мне клиент? мне нужен скрипт, пример: сделал заказ в этом заказе есть папка с айди товара и файлы конфиг и запускной файл, скрипт буде создавать папку по именем айди и копировать файлы в эту папку из резервной и все это через ssh но у меня не получается так сделать... вроде все верно но такое чувство что и не конектится к серверу... возможно на пхп не стоит модулей... не знаю сам я не спец а в этой теме первый раз...
 
 Top
Данил_123
Отправлено: 20 Ноября, 2011 - 21:22:34
Post Id


Участник


Покинул форум
Сообщений всего: 1026
Дата рег-ции: Июнь 2011  
Откуда: rostov


Помог: 9 раз(а)




так зачем ssh впрегать? ведь ветвление и куча функций есть copy например


-----
http://mysitecost.ru
 
 Top
Terman
Отправлено: 21 Ноября, 2011 - 14:30:01
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Да потому что все будет на разных серверах...
 
 Top
Stierus Супермодератор
Отправлено: 21 Ноября, 2011 - 14:33:12
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




ммм, а rsync настроить и обычным exec дергать, не ?
 
My status
 Top
Terman
Отправлено: 22 Ноября, 2011 - 09:40:12
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




rsync что это? в первые слышу... да у запуск файла требует ssh

(Отредактировано автором: 22 Ноября, 2011 - 09:56:04)

 
 Top
EuGen Администратор
Отправлено: 22 Ноября, 2011 - 09:44:48
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)






-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Terman
Отправлено: 23 Ноября, 2011 - 22:45:24
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




И все же какие компоненты для php мне надо установить что бы сайт мог соединяться с сервером по ssh и выполнять в нем команды терминала?

Напомню что стоит обычный WAMP и ssh server только уже на ubuntu.
На 2м сервере установлено все тоже самое ....
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB