【问题标题】:Pass variables from one Bash script to another after SSH在 SSH 之后将变量从一个 Bash 脚本传递到另一个
【发布时间】:2014-08-15 00:20:26
【问题描述】:

好的,所以我是 bash 脚本的新手,大约 2 个小时,我的头撞到了墙上。我需要将一些变量从一个脚本传递到另一个脚本,但似乎无法让它工作。

这很好用

script1.sh

echo "Enter your name"
read name
export name
./script2.sh

sript2.sh

echo $name

这不是

script1.sh

echo "Enter your name"
read name
export name
ssh $user@$domain "bash -s" < ./script2.sh

sript2.sh

echo $name

代码很笨,我明白了,但基本上我想做的是将数据库变量传递给脚本 2,以便在我通过 SSH 连接到的服务器上使用。我会在一个脚本中完成这一切,但似乎让服务器命令运行的唯一方法是在登录后调用第二个脚本,否则它会在本地运行服务器命令并失败。如果这有什么不同的话,我会在 Mac 上执行此操作。

帮助?

** 使用更合法的代码更新 ****

login.sh

#!/bin/bash
echo "Enter server username:"
read user
echo "Enter server domain"
read domain
echo "Enter your password"
read password
echo "Enter database name"
read database
export database
export user
export domain
export password
ssh $user@$domain "bash -s" < ./create_files.sh 

create_files.sh

#!/bin/bash
cd public_html
tar -zcvf test.tar.gz test.html
echo "db:"$database
mysqldump -u $user -p"$password" $database > $database.sql

这里的目标是在完成后使用 create_files.sh 中 login.sh 的详细信息,我还需要使用登录详细信息将创建的文件 scp 回本地计算机。希望这可以澄清问题。

【问题讨论】:

    标签: bash shell ssh


    【解决方案1】:

    调用ssh 时,它会创建一个新的shell 进程,该进程不会继承您在第一个脚本中导出的新变量。相反,尝试将它们作为命令行参数添加到第二个脚本中,如下所示:

    #!/bin/bash
    echo "Enter server username:"
    read user
    echo "Enter server domain"
    read domain
    echo "Enter your password"
    read password
    echo "Enter database name"
    read database
    ssh $user@$domain "bash -s" < ./create_files.sh "$user" "$password" "$database"
    

    然后将您的第二个脚本修改为如下所示:

    #!/bin/bash
    cd public_html
    tar -zcvf test.tar.gz test.html
    echo "db:$3"
    mysqldump -u "$1" -p"$2" "$3" > "$3".sql
    

    【讨论】:

    • 我试图让从客户端服务器检索文件变得更容易一些。所以基本上脚本应该做的是询问服务器详细信息,即数据库名称、用户和密码。然后通过SSH登录,mysqldump数据库。
    • 啊,对。我想你可能想研究一下期望脚本。除非您使用基于密钥的身份验证,否则上面的代码可能会在尝试登录时尝试将 $name 变量转储到密码字段中?
    • 不,没有基于密钥,只是用户/密码。然后我会读到期望。谢谢!
    • 如果您使用这些详细信息更新您的问题,我会尝试更新答案。
    • 我会多玩一点,如果我卡住了就回来。这是一个附带项目,所以我可以在停机时间搞砸。感谢您的回答,我提高了它而不是仅仅因为我实际上还没有解决方案而接受(我的错哈哈)
    猜你喜欢
    • 2012-11-15
    • 2020-06-09
    • 2017-11-07
    • 2013-04-07
    • 2015-04-18
    • 2011-02-08
    • 1970-01-01
    • 2015-12-06
    • 2012-04-04
    相关资源
    最近更新 更多