SSHログインとは異なるユーザーを使用してサーバーにscpファイルを送信する

SSHログインとは異なるユーザーを使用してサーバーにscpファイルを送信する

somefile.jarローカルコンピュータ(cygwin)からリモートコンピュータにファイルをコピーする必要がありますserver.local。 sudoercorpにSSHログインがあります。他のユーザーが所有するフォルダにファイルを配置する必要があります。server.localserver.local/opt/alice/libs/

[[email protected] ~]$ ls -ld /opt/alice/libs
drwxr-xr-x 2 alice alice 12288 Apr 13 11:09 /opt/alice/libs

権限が不足しているため、選択したディレクトリに直接ファイルをアップロードできません。だから私のコピー方法はいくつかの/tmp/ステップしかありません。server.local

$ scp ./somefile.jar [email protected]/tmp/
$ ssh [email protected]
Last login: Thu Apr 12 18:05:41 2018 from 192.168.87.34

[[email protected] ~]$ sudo chown alice:alice /tmp/somefile.jar
[[email protected] ~]$ sudo -u alice mv /tmp/somefile.jar /opt/alice/libs/

アップロードを実行するより短い方法はありますか?


私の目的を達成するためのツールが存在しない場合は、*.shこれらすべてを実行するスクリプトを作成できますか?

ベストアンサー1

sudoにパスワードが必要ないと仮定し、単純なスクリプトを作成したい場合は、データをパイプできます。

tar cf - ./somefile.jar | 
ssh -t [email protected] sudo -u alice tar xf - -C /opt/alice/libs/

-Cファイルを抽出する前にディレクトリを変更してください。あなたのtarにこれがない場合は、まず明示的なものを追加してくださいcd /opt/alice/libs/

おすすめ記事