Moduł Net::SCP
Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowaSpis treści
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: 2194164