niedziela, 26 lutego 2012

Zdalne wykonanie komendy w BASH z przypisaniem do lokalnej zmiennej

Jeśli lubisz czasem tak jak ja tworzyć kod w BASHu to możliwe, że natkniesz się na problem wykonania zdalnej komendy (na przykład na serwerze) i pobrania wyniku tej komendy do lokalnej zmiennej. Mam tu na myśli na przykład skrypt, który sprawdza czy na serwerze w danym katalogu pojawił się jakiś pliczek - z tym zastrzeżeniem, że skrypt ma się wykonywać nie po stronie serwera a hosta, który się do niego łączy.

Kwestie tego jak się logować przez SSH - czy przez zaszycie hasła w skrypcie czy przez wymianę kluczy pozostawiam Tobie i konkretnej implementacji jednak zdecydowanie lepszym pomysłem wydaje się wymiana kluczy. W każdym razie zaszywanie hasła w skrypcie wiąże się z pewnym ryzykiem.

Przejdźmy zatem do meritum. W celu pobrania wyniku zdalnej komendy do lokalnej zmiennej należy użyć podobnej konstrukcji:

wynik=$(ssh login@host polecenie_zdalne)
W podobny sposób można użyć telnetu - jednak w przypadku tego protokołu o bezpieczeństwie możemy pomarzyć.

Konkretny przykład:
wynik=$(ssh login@host ls -all|grep szukany_plik.txt)


Artykuł udostępniany na licencji CC-BY-SA-3.0

Brak komentarzy:

Prześlij komentarz