如何将字符串存储到远程文件中?

时间:2014-01-31 21:10:16

标签: shell command-line remote-access

如何将字符串存储到远程文件中? 我需要在命令行中使用一些字符串覆盖远程机器上的文件内容(我有用户名,密码和ip,并且可以通过ssh访问)。 如何在linux上实现这一点?

2 个答案:

答案 0 :(得分:1)

您可以使用ssh在一次操作中修改文件:

ssh user@host "echo \"$local_variable\" > /path/to/file"

然而,这是有风险的 - 如果局部变量中有双引号字符怎么办?在Bash中,你可以通过引用值来解决它:

ssh user@host "echo $(printf %q "$local_variable") > /path/to/file"

执行此操作的更简单,更安全方式,并避免任何奇怪的转义问题,只需将内容保存到本地文件,然后使用scp或{复制它{1}}。

答案 1 :(得分:1)

如果您有权访问ssh,则可以在远程计算机上执行任何命令:

ssh username@remotehost.com /usr/bin/mycommand

(例如,如果您愿意,可以将字符串回显到文件中)

如果您想要删除密码提示,可以使用SSH密钥身份验证:

ssh-keygen -t dsa
scp .ssh/id_rsa.pub username@remotehost.com:~/.ssh/authorized_keys2

一旦您的密钥在远程计算机上,您就可以使用没有密码的ssh。 (警告:使用非密码保护的密钥可能存在风险)