GNU/Linux >> Tutoriels Linux >  >> Linux

Exécuter des commandes sur une machine distante via PHP

Exécutez des commandes SSH via PHP sur le serveur A vers le serveur B.

Voici comment exécuter les commandes ssh avec la ligne de commande sous Linux :http://www.youtube.com/watch?NR=1&feature=fvwp&v=YLqqdQZHzsU

Pour exécuter des commandes sous Linux avec PHP, utilisez la commande exec().

J'espère que cela vous aidera à commencer à chercher dans la bonne direction.

Regardez ces deux messages pour automatiser l'invite de mot de passe

  • https://serverfault.com/questions/241588/how-to-automate-ssh-login-with-password
  • https://serverfault.com/questions/187036/execute-ssh-command-without-password

Voici un exemple rapide avec qui ne fonctionne pas code pour vous faire réfléchir :

<?php

    $server = "serverB.example.org";
    //ip address will work too i.e. 192.168.254.254 just make sure this is your public ip address not private as is the example

    //specify your username
    $username = "root";

    //select port to use for SSH
    $port = "22";

    //command that will be run on server B
    $command = "uptime";

    //form full command with ssh and command, you will need to use links above for auto authentication help
    $cmd_string = "ssh -p ".$port." ".$username."@".$server." ".$command;

    //this will run the above command on server A (localhost of the php file)
    exec($cmd_string, $output);

    //return the output to the browser
    //This will output the uptime for server B on page on server A
    echo '<pre>';
    print_r($output);
    echo '</pre>';
?>

Le flux recommandé consiste à exécuter une commande sur le serveur A vers SSH vers le serveur B


Utilisez phpseclib pour sécuriser SSH ou SCP vers des serveurs distants

Installer aveccomposer require phpseclib/phpseclib

use phpseclib\Crypt\RSA;
use phpseclib\Net\SSH2;
use phpseclib\Net\SCP;

// Load your private key
$key = new RSA();
$key->loadKey('private key string');

// Connect to the server
$ssh = new SSH2('ip_address', 'port', 'timeout');
if (!$ssh->login('username', $key)) {
    throw new Exception("Unable to connect");
}

// Run a remote command
echo $ssh->exec('whoami');

// SCP put a string
$result = (new SCP($ssh))->put('remotePath', 'content to put');
// SCP put a file
$result = (new SCP($ssh))->put('remotePath', 'localPath', SCP::SOURCE_LOCAL_FILE);

// SCP get a file
$result = (new SCP($this->ssh))->get('remotePath', 'localPath');

// $result is true or false

Linux
  1. Forcer le redémarrage d'un serveur Linux distant

  2. Comment copier un fichier d'un serveur distant vers une machine locale ?

  3. Exécuter la commande dans le terminal actif distant ?

  4. Résoudre les problèmes d'accès à distance à SQL Server

  5. écrire un script shell en ssh sur une machine distante et exécuter des commandes

Exécuter des commandes sur des systèmes Linux distants via SSH

Utilisation de FileZilla pour se connecter au serveur SFTP via l'interface graphique

Dépannage du bureau à distance

Comment SSH au serveur via Linux

Procédure :Commandes SFTP - Transférer en toute sécurité des fichiers vers un serveur distant

Comment exécuter et répertorier les tâches Cron pour un système Linux via PHP