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
Форумы портала PHP.SU :: Версия для печати :: ssh соединение
Форумы портала PHP.SU » » Вопросы новичков » ssh соединение

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

1. Terman - 20 Ноября, 2011 - 19:16:44 - перейти к сообщению
Всем привет, мне нужно написать небольшой скриптик создания папки и запуска из него скрипта и все это через 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. ?>


Если можно объясните....
2. Данил_123 - 20 Ноября, 2011 - 20:19:32 - перейти к сообщению
ssh-клиент а так почему бы не mkdir
3. Terman - 20 Ноября, 2011 - 21:16:59 - перейти к сообщению
Зачем мне клиент? мне нужен скрипт, пример: сделал заказ в этом заказе есть папка с айди товара и файлы конфиг и запускной файл, скрипт буде создавать папку по именем айди и копировать файлы в эту папку из резервной и все это через ssh но у меня не получается так сделать... вроде все верно но такое чувство что и не конектится к серверу... возможно на пхп не стоит модулей... не знаю сам я не спец а в этой теме первый раз...
4. Данил_123 - 20 Ноября, 2011 - 21:22:34 - перейти к сообщению
так зачем ssh впрегать? ведь ветвление и куча функций есть copy например
5. Terman - 21 Ноября, 2011 - 14:30:01 - перейти к сообщению
Да потому что все будет на разных серверах...
6. Stierus - 21 Ноября, 2011 - 14:33:12 - перейти к сообщению
ммм, а rsync настроить и обычным exec дергать, не ?
7. Terman - 22 Ноября, 2011 - 09:40:12 - перейти к сообщению
rsync что это? в первые слышу... да у запуск файла требует ssh
8. EuGen - 22 Ноября, 2011 - 09:44:48 - перейти к сообщению
9. Terman - 23 Ноября, 2011 - 22:45:24 - перейти к сообщению
И все же какие компоненты для php мне надо установить что бы сайт мог соединяться с сервером по ssh и выполнять в нем команды терминала?

Напомню что стоит обычный WAMP и ssh server только уже на ubuntu.
На 2м сервере установлено все тоже самое ....

 

Powered by ExBB FM 1.0 RC1