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?


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.


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

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 username@hostname.xyz
ls
cd somedir
exit

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

sftp [user@]host[:dir]

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.


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 me@host.com "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 me@host.com <script.remote.sh } > /home/me/output.log 2>/home/me/output.err

1
W drugim wierszu kodu { }nie są potrzebne.
glglgl,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.