Czy istnieje sposób zrobienia zdalnego „ls”, podobnie jak „scp” robi zdalne kopiowanie?

55

Czy istnieje sposób na wykonanie zdalnego „ls” podobnie jak „scp” robi zdalne kopiowanie w standardowej powłoce linux?

Zubair
źródło
Widzę, że byłoby miło to zrobić, ale dlaczego nie po prostu włączyć SSH i zrobić ls?
SpacemanSpiff
@SpacemanSpiff - więc możesz napisać skrypt. Tak doszedłem do tej strony.
wobbily_col

Odpowiedzi:

75

Zawsze możesz to zrobić:

ssh user@host ls -l /some/directory

Spowoduje to SSH do hosta, uruchomienie ls, zrzut danych wyjściowych z powrotem do Ciebie i natychmiastowe odłączenie.

Corey S.
źródło
2
... jeśli masz prawdziwy dostęp do powłoki. Niektóre systemy mają specjalną powłokę, która akceptuje tylko niektóre scpi rsyncpołączenia, być może sftprównież i to wszystko.
glglgl,
jak byś to nazwał alias, aby powiedzieć „rls”?
Walrus the Cat
2
@WalrustheCat alias rls="ssh user@host ls -l"Uruchom ponownie powłokę i rls /some/directorypowinien działać.
chishaku,
Jedynym problemem jest to, że nie znaleziono pliku zwraca kod błędu, a moim powodem jest właśnie to, dlaczego chcę wywołać ls.
Steve Cohen
Nie obserwuję @SteveCohen. Czy chcesz kod błędu ze zdalnego ls? Jeśli tak, to $? zawiera go zaraz po wykonaniu polecenia. (np. zwraca 2, jeśli uruchomię to [lokalnie lub zdalnie] na pliku, który nie został znaleziony)
Corey S.
11

Aby wyświetlić listę wszystkich plików w katalogu:

rsync host.name.com:directory/path/'*'

Dla czegoś takiego jak znajdź katalog / ścieżka -ls

rsync -r host.name.com:directory/path
Black Rock Onyx
źródło
Jeśli rsync nie jest zainstalowany na hoście, otrzymasz coś takiego bash: rsync: command not found. Myślę, że to sugeruje, że używa SSH w tle?
mwfearnley,
Zwróć uwagę, że format jest podobny do ls -l. W moim systemie nie wygląda na to, żeby istniała opcja tylko listy plików.
Jonathan
6

Wszystkim przychodzącym przez Google na to pytanie, ponieważ szukają sposobu na wyświetlenie listy zdalnych plików, ale nie mogą uzyskać dostępu do zdalnego serwera za pośrednictwem ssh (typowy przypadek dla serwerów kopii zapasowych), można użyć „sftp”.

Przykład:

sftp [email protected]
ls
cd somedir
exit

Rozpocznij interaktywną sesję w określonym zdalnym katalogu:

sftp [user@]host[:dir]
tobltobs
źródło
3

Tak. SSH i wykonaj ls:

ssh host ls /path

Możesz z łatwością napisać skrypt, aby uzyskać większą elastyczność, lub użyć składni host: ścieżka scp.

Andrew M.
źródło
1

Uważam, że najczęściej używam tego, aby uzyskać wynik ls, prostą listę plików bez wszystkich uprawnień i dat i tak dalej, i przechowywać go w pliku lokalnym.

{ ssh [email protected] "cd /dir/of/interest; ls -1f *.txt;" } > /home/me/listoffiles.txt

Możesz uruchomić cokolwiek chcesz w ramach cytatów. Wszystkie dane wyjściowe kończą się w lokalnym pliku tekstowym. Lub jeśli chcesz uruchomić duży nieprzyjemny skrypt na serwerze i przechwycić wszystkie dane wyjściowe, nawet błędy:

{ ssh [email protected] <script.remote.sh } > /home/me/output.log 2>/home/me/output.err
duży typ
źródło
1
W drugim wierszu kodu { }nie są potrzebne.
glglgl,