Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- This is the best way I found to automatically run multiple commands or commands that might take longer then expected. NOTE: this assumes that no where in the output is there the text '[end]' otherwise the function will end prematurely. Hope this helps people.
- <?php
- $ip = 'ip_address';
- $user = 'username';
- $pass = 'password';
- $connection = ssh2_connect($ip);
- ssh2_auth_password($connection,$user,$pass);
- $shell = ssh2_shell($connection,"bash");
- //Trick is in the start and end echos which can be executed in both *nix and windows systems.
- //Do add 'cmd /C' to the start of $cmd if on a windows system.
- $cmd = "echo '[start]';your commands here;echo '[end]'";
- $output = user_exec($shell,$cmd);
- fclose($shell);
- function user_exec($shell,$cmd) {
- fwrite($shell,$cmd . "\n");
- $output = "";
- $start = false;
- $start_time = time();
- $max_time = 2; //time in seconds
- while(((time()-$start_time) < $max_time)) {
- $line = fgets($shell);
- if(!strstr($line,$cmd)) {
- if(preg_match('/\[start\]/',$line)) {
- $start = true;
- }elseif(preg_match('/\[end\]/',$line)) {
- return $output;
- }elseif($start){
- $output[] = $line;
- }
- }
- }
- }
- ?>
- [EDIT BY danbrown AT php DOT net: Contains a bugfix supplied by (jschwepp AT gmail DOT com) on 17-FEB-2010 to fix a typo in a function name.]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement