
somefile.jar
ローカルコンピュータ(cygwin)からリモートコンピュータにファイルをコピーする必要がありますserver.local
。 sudoercorp
にSSHログインがあります。他のユーザーが所有するフォルダにファイルを配置する必要があります。server.local
server.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/
。
答え2
これが唯一の方法である可能性が高いです。