Vraag Is er een manier om een ​​remote "ls" te doen zoals "scp" doet een externe kopie?


Is er een manier om een ​​remote "ls" te doen zoals "scp" doet een externe kopie in een standaard Linux-shell?


42
2018-03-02 12:50


oorsprong


Ik kan zien dat het leuk zou zijn om dit te doen, maar waarom niet alleen SSH in en doe ik een ls? - SpacemanSpiff
@SpacemanSpiff - Dus je kunt het scripten. Dat is hoe ik op deze pagina terecht kwam. - wobbily_col


antwoorden:


Je zou dit altijd kunnen doen:

ssh user@host ls -l /some/directory

Dat zal SSH naar de host, ls uitvoeren, de uitvoer naar u terugsturen en onmiddellijk de verbinding verbreken.


59
2018-03-02 12:55



... als je echte shell-toegang hebt. Sommige systemen hebben een speciale schaal die alleen bepaalde accepteert scp en rsync oproepen, misschien sftp zo goed, en dat is het. - glglgl
hoe zou je dit een naam geven aan, laten we zeggen, "rls"? - Walrus the Cat
@WalrustheCat alias rls="ssh user@host ls -l" Herstart je shell en rls /some/directory zou moeten werken. - chishaku
Het enige probleem hiermee is dat bestand niet gevonden een foutcode retourneert, terwijl mijn reden om dit te doen precies is waarom ik ls wil bellen. - Steve Cohen
@SteveCohen niet volgen. Wilt u de foutcode van de remote ls? Zo ja, $? bevat het direct nadat je het commando hebt uitgevoerd. (het geeft bijvoorbeeld 2 als ik dit [lokaal of op afstand] uitvoer op een bestand dat niet is gevonden) - Corey S.


Om alle bestanden in een map weer te geven:

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

Voor zoiets als vind map / pad -ls

rsync -r host.name.com:directory/path

10
2018-03-04 17:40



Als rsync niet op de host is geïnstalleerd, krijg je zoiets als bash: rsync: command not found. Ik denk dat dit impliceert dat het SSH op de achtergrond gebruikt? - mwfearnley
Merk op dat het formaat vergelijkbaar is met ls -l. Op mijn systeem lijkt het er niet op dat er een optie is om alleen de bestanden te vermelden. - Jonathan


Ja. SSH en doe een ls:

ssh host ls /path

U kunt dit eenvoudig in een script opnemen om flexibeler te zijn of de host: padsyntaxis gebruiken scp toepassingen.


3
2018-03-02 12:54





Ik vind dat dit het meest wordt gebruikt om het ls-resultaat te krijgen, een eenvoudige lijst met bestanden zonder alle machtigingen en datums en dergelijke, en deze in een lokaal bestand te bewaren.

{ ssh me@host.com "cd /dir/of/interest; ls -1f *.txt;" } > /home/me/listoffiles.txt

Je kunt alles wat je wilt uitvoeren binnen de aanhalingstekens. Alle uitvoer eindigt in uw lokale tekstbestand. Of als u een groot smerig script op de server wilt uitvoeren en al zijn uitvoer wilt vastleggen, zelfs fouten:

{ ssh me@host.com <script.remote.sh } > /home/me/output.log 2>/home/me/output.err

1
2018-06-06 20:21



In de tweede codelijn, de { } zijn niet nodig. - glglgl


Voor iedereen die via google naar deze vraag komt omdat ze op zoek zijn naar een manier om externe bestanden op te sommen, maar geen toegang hebben tot de externe server via ssh (veel voorkomend geval voor back-upservers), zou je 'sftp' kunnen gebruiken.

Voorbeeld:

sftp username@hostname.xyz
ls
cd somedir
exit

Start een interactieve sessie in een specifieke externe directory:

sftp [user@]host[:dir]

1
2018-06-02 21:44