1. ホーム
  2. unix

[解決済み] ターミナルからのシングルラインsftp

2022-11-01 23:17:07

質問

一日のうち何度か、リモート サーバー上のログ ファイルを参照する必要があるテストを実行することがあります。私は、ターミナルを使用して sftp でリモート サーバーにアクセスし、目的のログ ファイルを /tmp に引き出します。

私は今日、オプションに目を通しましたが man sftp を使用して、コマンドを入力し、エンターキーを押し、コマンドを入力し、エンターキーを押す、といった操作をしなくても済むように、基本的に 1 行で次のコマンドを実行する方法を見つけようとしました。

(今私がしていること)

sftp myuser@myserver
--mypassword at prompt
lcd /tmp
get /dir/dir/dir/dir/file
quit

を調べていて見つけたのですが man sftp への参照を見つけました。 scp という、今まで使ったことのないものを使っています。私が求めているものであるかもしれないと感じていますが、安全にコピーされたファイルの行き先を指定する方法は見当たりませんでした。

誰か私に /dir/file をリモートサーバから取得し、それを /tmp/file_plus-my-description ?

私は、通常のUNIXのコピーのようなsftpまたはscpコマンドを実行できることを望んでいました。

scp myuser@myserver /dir/file /tmp/file_plus-my-description

私は、ビルトインの Terminal をMac OS X 10.8で使用しています。ありがとうございます。

どのように解決するのですか?

2017年9月更新 - tl;dr

ダウンロード リモート ftp サーバーから自分のマシンにファイルを 1 つダウンロードします。

sftp {user}@{host}:{remoteFileName} {localFileName}

アップロード あなたのマシンからリモートの ftp サーバーに単一のファイルをアップロードします。

sftp {user}@{host}:{remote_dir} <<< $'put {local_file_path}'


オリジナルの回答です。

OK、だから私は少し間抜けな感じです。しかし、私はそれを考え出した。私はほとんどそれを持つトップで。

sftp user@host remoteFile localFile

ターミナルに表示されるドキュメントはこれだけです。

sftp [user@]host[:file ...]
sftp [user@]host[:dir[/]]

ところが このサイト を見ると、あらすじの下に以下のように表示されています。

sftp [-vC1 ] [-b batchfile ] [-o ssh_option ] [-s subsystem | sftp_server ] [-B buffer_size ] [-F ssh_config ] [-P sftp_server path ] [-R num_requests ] [-S program ] host 
sftp [[user@]host[:file [file]]] 
sftp [[user@]host[:dir[/]]]

つまり、単純に : の後にユーザーとホストを記述し、リモートファイルとローカルファイル名を記述するだけです。信じられないほど簡単です!

単一行でリモートファイルを sftp コピーします。

sftp username@hostname:remoteFileName localFileName
sftp kyle@kylesserver:/tmp/myLogFile.log /tmp/fileNameToUseLocally.log

2016年2月更新

一応、これの逆をやるコマンドを探している人がいて、かつ を押す を一行で実行するコマンドを探している人のために説明します。 sftp コマンドで、それを達成するための解決策を下のユーザー@Thariamaが投稿しました。余分なコードについては、彼らに脱帽です。

sftp {user}@{host}:{remote_dir} <<< $'put {local_file_path}'