Moduł Net::SCP

Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowa

Opis modułu

Prosta nakładka na komendy ssh oraz scp.

Funkcje

scp SOURCE, DESTINATION

Może równie dobrze być funkcja jak i metoda: jednak, interfejs funkcji jest już wycofywany.

Wywołuje scp w trybie wsadowym, z opcjami -B -p -q oraz -r. Zwraca fałsz jeśli wystąpi błąd, oraz wiadomość tekstową z błędem dostępną poprzez $scp->{errstr}.

Zwraca fałsz i ustawia atrybut errstr jeśli wystąpi błąd.

iscp SOURCE, DESTINATION

Może równie dobrze być funkcja jak i metoda: jednak, interfejs funkcji jest już wycofywany.

Wyświetla komendę scp która zostanie wykonana, czeka na użytkownika na potwierdzenie, i (opcjonalnie) wykonuje scp z flagami -p oraz -r.

Zwraca fałsz i ustawia atrybut errstr jeśli wystąpi błąd.

Metody

new HOSTNAME [ USER ] | HASHREF

Jest to konstruktor dla obiektu Net::SCP. Musi zostać sprecyzowana nazwa hosta, może opcjonalnie dostarczyć nazwy użytkownika. Można również podać referencje do hasza o nazwach parametrów, klucze wyglądają tak:

host - nazwa hosta user - nazwa użytkownika interactive - bool cwd - bieżąca ścieżka na zdalnym serwerze
login [USER]
Metoda kompatybilna. Opcjonalnie ustawia użytkownika.
cwd CWD
Ustawia cwd (użytkownik później dostaje albo podaje żądanie bez pełnej ścieżki).
get REMOTE_FILE [, LOCAL_FILE]

Używa scp do transferu REMOTE_FILE ze zdalnego hosta. Jeśli plik lokalny jest ominięty, używa nazwy podstawowej pliku zdalnego.

mkdir DIRECTORY

Tworzy folder na zdalnym serwerze. Zwraca fałsz i ustawia atrybut errstr.

(notka implementacyjna:Jeśli połączenie ssh jest ustanowione do zdalnej maszyny to używane jest: '/bin/mkdir -p')

size FILE

Zwraca rozmiar w bajtach dla danego pliku znajdującego sie na zdalnej maszynie. Zwraca 0 jeśli wystąpi błąd, oraz ustawia atrybut errstr. W przypadku jeśli plik na zdalnym serwerze naprawdę ma długość 0, specjalna wartość 0e0 jest zwracana, jest ona zamieniana na 0 gdy używamy jej jako numer.

(notka implementacyjna: Do oceniania wielkości pliku na zdalnej maszynie używana jest komenda wc.)

put LOCAL_FILE [, REMOTE_FILE]

Używa scp do transferu LOCAL_FILE na zdalnego hosta. Jeśli nazwa pliku na zdalnej maszynie jest pominięta, używana jest podstawowa nazwa pliku z lokalnej maszyny.

binary

Metoda potrzebna ze względów kompatybilnych: nic nie robi, zwraca prawda.

Często zadawane pytania.

P:W jaki sposób dostarczyć hasło do połączenie z ssh w skrypcie perlowym używającym modułu Net::SSH?

O:Nie można. Użyj kluczy RSA oraz DSA. Zobacz strone manuala ssh-keygen(1).

P:Z mojego procesu "wyciekają" procesy ssh.

O: Zobacz "Jak unikać procesów zombie na UNIX'ie" w perlfaq8, IPC::Open2, IPC::Open3 oraz "waitpid" w perlfunc.

Dodatkowe informacje.

Dlaczego wybrałem ten moduł

W programach perlowych które pisałem chciałem mieć dostęp zarówno dostęp do plików zdalnych jak i lokalnych zarazem. Ponieważ nie wszystkie pliki można było przetwarzać od razu ze względu na np. duże rozmiary. Rozwiązaniem był ten właśnie moduł. W jakimś czasie użytkowania spostrzegłem jednak sporo problemów. Sporo uruchomionych procesów, konieczność używania ssh co wiąże sie z ograniczeniami platformy. Zamieniłem ten moduł na Net::SSH::Perl oraz Net::SFTP które wydają sie bardziej użyteczne. Jednak na niewielkie potrzeby oraz jeśli używamy systemów uniksowych moduł ten może okazać się pożyteczny.

Mój przykładowy program
use Net::SCP qw(iscp); $data = `date +%H_%M_%x`; chomp $data; $data = "./${data}"."pub"; iscp($ARGV[0]."@".$ARGV[1].":./public_html", $data); `tar -cvzf $data.tar.gz $data;rm -rf $data`

Ten program uruchomiony z argumentami nazwa_użytkownika, serwer kopiuje twój ./public_html ze zdalnego serwera rekurencyjnie i tworzy archiwum tgz o nazwie wraz z dołączoną datą. W bieżącym katalogu.

Przydatne linki
Dokumentacja tego modułu w cpan'ie
Trochę więcej dokumentacji

Kontakt i informacje o autorze opracowania

Autorzy modułu:

Ivan Kohler

Znaczące zmiany wprowadził Anthony Deaver

Naprawa błędów Jon Gunnip

Autor przekładu: MD

Numer GG: Słoneczko 2194164

Autor tego opracowania

M.D.
Uniwersytet Gdański - Instytut Informatyki - Strona domowa - Perl - Wyklady
[c] Piotr Arłukowicz, materiały z tej strony udostępnione są na licencji GNU.