2013-06-10 29 views
6

Per dare background sul mio ambiente:eseguire comandi sul computer remoto tramite PHP

Ho 3 macchine A, B & C

A = Webserver, l'esecuzione di un sito web php, che agisce in sostanza come interfaccia per B & C

B = macchina Linux Ubuntu, ho l'accesso root, SSH e tutta la bontà necessaria per lavorare sulla macchina tramite un client SSH (ho un file della chiave privata .ppk per questo server)

C = MyS ql Database server in esecuzione su Linux

Posso eseguire query da A (php) su C (Mysql) e restituire i risultati. Ma ora sto cercando di eseguire comandi linux su B da A.

Es.

Ho uno script in esecuzione su B e vorrei eseguire un comando da A (php) per mostrare lo stato dello script.

In linea di comando per fare questo è facile - lo stato ./SomeScript

ma voglio mostrare lo stato di questo script nel sito im hosting su server A.

Anche solo controllare il tempo di attività di Server B sul server A.

È in ogni modo possibile. ho googlato per sempre, come sembra, ma non sto arrivando da nessuna parte, non troppo graduale se la connessione è sicura o meno in quanto si tratta di una rete chiusa senza accesso esterno a questa rete.

Qualsiasi consiglio sarebbe molto apprezzato.

Grazie

+0

Perché non inserire uno script su 'B' che fornisce informazioni specifiche come l'uptime e può consentire l'esecuzione di programmi specifici? Si vorrà che lo script verifichi che l'IP sia effettivamente dal server 'A'. –

+0

Grazie, vedi che posso fare, il problema che sto avendo è quello di visualizzare i risultati da uno specifico script su B su una pagina php su A – Stroes

+0

I risultati sono probabilmente scaricati come una sorta di testo o file html. Dopo che il file di output è stato prodotto in B, scpalo in A. – kainaw

risposta

9
comandi

Run SSH tramite PHP su server A al server B.

Ecco come eseguire i comandi ssh con la riga di comando in linux: http://www.youtube.com/watch?NR=1&feature=fvwp&v=YLqqdQZHzsU

Al fine di eseguire comandi su Linux con PHP usa il comando exec().

Spero che questo ti faccia iniziare guardando nella giusta direzione.

un'occhiata a questi due posti per l'automazione Richiesta password

Ecco un rapido esempio con non funzionante codice di farti pensare:

<?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>'; 
?> 

Il flusso consigliato è eseguire un comando sul server A su SSH sul server B

+0

grazie per il collegamento, tuttavia voglio inviare comandi ssh direttamente da php a una macchina Linux remota? – Stroes

+0

@Stroes vedi la risposta modificata con un esempio per farti pensare nella giusta direzione. Questo eseguirà i comandi ssh direttamente da php su una macchina remota e restituirà la risposta. – amaster

+0

Grazie per la risposta, questo ha più senso logico !! – Stroes

Problemi correlati