有什么办法可以将以下命令组合成一个命令吗?我不想每次都为每个命令登录。
sshpass -p 'somepwd' ssh user@server "mkdir -p /home/user/test"
sshpass -p 'somepwd' scp file.sh user@server:/home/user/test
sshpass -p 'somepwd' scp /test/somefile.txt user@server:/home/user/test
sshpass -p 'somepwd' ssh user@server -C "cd /home/user/test;./file.sh"
我确实检查了 combing multiple commands when using ssh and scp 的答案;基于此,我仍然需要 3 次登录,一次用于第一个 ssh 和 mkdir,一次用于 scp,一次用于 ssh 和运行 shell 脚本。
有没有更好的解决方案?
最佳答案
Use public/private keys而不是密码验证。这不仅会简化
ssh
的使用,而且更加安全,尤其是在您 disallow password authentication on the server 之后。你正在连接到。使用密码身份验证意味着您将被黑客入侵,或者您的服务器已经受到威胁而您还不知道。本回答的其余部分假定您已设置公钥/私钥。我看到您在
/test
中有文件。不要将您的工作放在根目录中,这会引发安全问题。相反,除非您有正确设置权限的经验,否则请在您的主目录中工作。因为
file.sh
位于您的当前目录(无论是什么)并且您想要来自/test/
的文件,所以您不能使用rsync
。如果您的所有文件都位于同一目录中,rsync
将是一个不错的选择。
这就是我们剩下的;我没有弄乱 /test/
的位置,因为我对任务了解不够:
ssh user@server "mkdir -p /home/user/test"
scp file.sh user@server:/home/user/test
scp /test/somefile.txt user@server:/home/user/test
ssh user@server -C "cd /home/user/test;./file.sh"
关于linux - 在 shell 脚本中结合 ssh 和 scp 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47984381/