「scp」がリモートコピーを行うのと同じように、リモート「ls」を実行する方法はありますか?


55

"scp"が標準のLinuxシェルでリモートコピーを行うのと同じように、リモート "ls"を実行する方法はありますか?


これを行うのは良いことだと思いますが、なぜSSHだけでlsを実行しないのですか?
SpacemanSpiff

@SpacemanSpiff-したがって、スクリプトを作成できます。それがこのページにたどり着いた方法です。
wobbily_col 14

回答:


75

あなたはいつもこれを行うことができます:

ssh user@host ls -l /some/directory

ホストにSSHで接続し、lsを実行し、出力をダンプしてすぐに切断します。


2
...実際のシェルアクセスがある場合。いくつかのシステムは、特定受け入れる特別なシェル持っているscprsync多分、通話sftpのほかに、それはそれです。
glglgl 14

これを「rls」などとエイリアスするにはどうしますか?
猫のセイウチ14

2
@WalrustheCat alias rls="ssh user@host ls -l"シェルを再起動すると動作するrls /some/directoryはずです。
着尺

これに関する唯一の問題は、ファイルが見つからないというエラーコードを返すことです。それを行う理由が正確にlsを呼び出したい理由である場合です。
スティーブコーエン

@SteveCohenをフォローしていません。リモートlsからのエラーコードが必要ですか?もしそうなら、$?コマンドを実行した直後に含まれています。(たとえば、見つからないファイルで[ローカルまたはリモート]で実行すると2が返されます)
Corey S.

11

ディレクトリ内のすべてのファイルをリストするには:

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

find directory / path -lsなどの場合

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

ホストにrsyncがインストールされていない場合、次のようなメッセージが表示されますbash: rsync: command not found。これは、バックグラウンドでSSHを使用していることを意味していると思いますか?
mwfearnley

形式はに似ていることに注意してくださいls -l。私のシステムでは、ファイルをリストするだけのオプションがあるようには見えません。
ジョナサン

6

グーグル経由でこの質問に来るすべての人は、リモートファイルをリストする方法を探していますが、ssh経由でリモートサーバーにアクセスできないため(バックアップサーバーの一般的なケース)、「sftp」を使用できます。

例:

sftp username@hostname.xyz
ls
cd somedir
exit

特定のリモートディレクトリで対話型セッションを開始します。

sftp [user@]host[:dir]

3

はい。SSHを実行しlsます:

ssh host ls /path

これを簡単にスクリプト化してより柔軟にするか、host:path構文をscp使用することができます。


1

私がこれを最も頻繁に使用するのは、lsの結果、すべてのアクセス許可と日付などのないファイルの単純なリストを取得し、ローカルファイルに保持することです。

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

引用符内で必要なものを実行できます。すべての出力は最終的にローカルテキストファイルになります。または、サーバーで大きな厄介なスクリプトを実行し、その出力をすべてキャプチャしたい場合、エラーも含めて:

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

1
2行目のコードでは、{ }は必要ありません。
glglgl 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.