sshing时传递bash变量

时间:2018-06-19 17:50:17

标签: bash ssh parameter-passing

我遇到了多个人在运行需要端口转发的应用程序的问题。我想生成一个随机端口号,在传递该随机数的同时ssh到应用程序服务器,然后用sed在几个不同的脚本中用此端口替换默认端口。

那么我有什么办法可以通过ssh传递bash变量,或者有更好的方法来实现此目的?

1 个答案:

答案 0 :(得分:1)

如果知道要使用变量做什么,则可以将其传递给远程主机,并在同一行上运行命令:

ssh name@host "sed -i -e \"s/$myrandnumber/22/g\" file1 file2 file3"

$myvar将在ssh发生之前扩展,这意味着它将是您在原始计算机而不是远程计算机上设置的值。您可以在远程计算机上将其设置为变量:

ssh name@host "export remotevar=$myrandnumber; bash -i" 

但是它仅对当前会话可用。如果您只想为将来的某个日期存储该变量,那么最好的选择是写入一个文件,该文件将在以后获取,即

ssh name@host "echo \"myvar=$myrandnumber\" >> /etc/environment"