一个 shell 脚本可在本地和远程执行命令

一个 shell 脚本可在本地和远程执行命令

所以,问题来了。我在远程计算机上有一个仅 root 可用的文件,以及仅私钥的无 root SSH 访问权限(不过我有 sudo )。我需要将该文件复制到本地计算机,并使其尽可能易于使用(别名或 shell 脚本),因为这将被不同的人多次使用。

这就是我的想法: 1. SSH 到远程计算机并将文件复制到我有权限的某个位置 2. 从本地计算机,对我刚刚复制的文件执行 rsync --remove-source-files 。

但我看不出有什么方法可以仅用一个命令来完成此操作。有没有?

答案1

我想我可以改进八位托尼给出的答案。

ssh -t user@target 'sudo cat /source/file' > output && chmod +x output

当涉及多个文件时,我发现帕克斯比 rsync 更容易使用,无论 rsync 对我来说有多频繁地“简化”。

ssh -t user@target 'cd /src && pax -w ./' | pax -r 

HTH。

答案2

ssh -t user@target machine sudo cp /source/file /target/file

创建-t一个伪 tty,以便 sudo 可以要求输入密码。该ssh命令采用一个可选命令(sudo cp ....在本例中),该命令在目标计算机上执行,然后断开连接。

系统将提示您输入sudo密码(即用户@目标的密码)。

然后您可以运行rsync.您可以在启动计算机上编写此脚本,只需在单个脚本中包含两行。

相关内容