如何将变量从本地服务器传递到远程服务器



我试图将变量从本地服务器(location1)传递到远程服务器(location2)。该代码的目的是从预定义的位置从远程服务器复制文件。简单地说,我想使用预定义的路径将文件从location2复制到location1,其中location1在本地服务器上,location2是远程服务器。参见代码段:

 $location1=somewhere/on/local_server
 $location2=somewhere/on/remote_server
 sshpass -p "password" ssh username@74.11.11.11 'su -lc "cp -r $location2 $location1";'

我得到的错误是$location1和$location2都未定义。此外,我不想手动输入位置路径,因为它们可以随时更改,如果手动完成,在代码中更改它们将是一种痛苦。

你可以这样做:

sshpass -p "password" ssh username@74.11.11.11 "su -lc "cp -r $location2 $location1""

您可以尝试让远程shell从输入中读取变量:

location1=somewhere/on/local_server
location2=somewhere/on/remote_server
printf '%sn%sn' "$location1" "$location2" | 
    sshpass -p "password" ssh username@74.11.11.11 'read location1; read location2; su -lc "cp -r "$location2" "$location1"";'

注意我给变量加了双引号。即使路径名上有空格,它也可以工作。

您的location1/2声明有语法错误。在赋值时不能使用"$"。这就是为什么你会得到一个未定义的值:

location1=somewhere/on/local_server
location2=somewhere/on/remote_server

相关内容

  • 没有找到相关文章

最新更新