2013-06-10 11 views
6

Aby dać tło na moim otoczeniu:Wykonywanie komend na zdalnym komputerze za pośrednictwem PHP

mam 3 maszyny A, B & C

A = Serwer, prowadzenie strony internetowej php, które zasadniczo działa jako interfejs dla B & C

B = maszyna Linux Ubuntu, mam roota dostępu, SSH i wszystkie potrzebne dobroci do pracy na komputerze za pomocą klienta SSH (mam .ppk plik klucza prywatnego dla tego serwera)

C = MyS ql Serwer bazy danych działający pod Linuksem

Mogę pomyślnie wykonywać zapytania od A (php) na C (Mysql) i zwracać wyniki. Ale teraz próbuję wykonać polecenia Linuksa na B z A.

Np.

Mam skrypt, który działa na B i chciałby wykonać polecenie z A (php), aby pokazać status skryptu.

W wierszu polecenia, aby to zrobić jest łatwe - stan ./SomeScript

Ale chcę pokazać status tego skryptu na stronie internetowej im hosting na serwerze A.

Nawet tylko sprawdzić uptime Serwer B na serwerze A.

Jest to w każdym razie możliwe. Mam googled na zawsze, jak się wydaje, ale nie dostaję się nigdzie, nie jestem zbyt stopniowo, jeśli połączenie jest bezpieczne, czy nie, ponieważ jest to zamknięta sieć bez zewnętrznego dostępu do tej sieci.

Wszelkie porady będą bardzo cenne.

Dzięki

+0

Dlaczego nie umieścić skryptu na 'B', który podaje konkretne informacje, takie jak czas pracy, i może zezwolić na uruchamianie określonych programów? Będziesz chciał, aby skrypt sprawdził, czy adres IP rzeczywiście pochodzi z serwera 'A'. –

+0

Dzięki, widzę, że mogę to zrobić, problem polegający na wyświetlaniu wyników z określonego skryptu na B na stronie php na A – Stroes

+0

Wyniki są prawdopodobnie zrzucane jako jakiś tekst lub plik HTML. Po utworzeniu pliku wyjściowego na B, przesuń go do A. – kainaw

Odpowiedz

9
poleceń

Run SSH przez PHP na serwerze A do serwera B.

Oto jak uruchomić poleceń ssh z wiersza poleceń w systemie Linux: http://www.youtube.com/watch?NR=1&feature=fvwp&v=YLqqdQZHzsU

W celu uruchomienia polecenia na Linux z PHP używa polecenia exec().

Mam nadzieję, że dzięki temu zaczniesz szukać we właściwym kierunku.

Spójrz na tych dwóch stanowisk do automatyzacji hasło poprosi

Oto krótki przykład z nieprodukcyjnym kod skłaniające do myślenia:

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

Zalecany przepływ polega na uruchomieniu polecenia na serwerze A do SSH na serwerze B

+0

dzięki za link, jednak chcę wysyłać polecenia ssh bezpośrednio z php do zdalnego komputera z systemem Linux? – Stroes

+0

@Stroes zobacz edytowaną odpowiedź z przykładem, abyś mógł myśleć w dobrym kierunku. Spowoduje to uruchomienie poleceń ssh bezpośrednio z php na zdalną maszynę i zwróci odpowiedź. – amaster

+0

Dzięki za odpowiedź, to ma bardziej logiczny sens! – Stroes

Powiązane problemy