【发布时间】:2021-03-06 00:13:30
【问题描述】:
从我的 bash 脚本中,通过 ssh 登录到远程主机。将我的配置文件与脚本一起发送到远程主机以访问变量。代码如下:
#!/bin/bash
source ~/shell/config.sh
script=$(cat <<\____HERE
pubkeyarray=()
privkeyarray=()
for (( w=1; w<=3; w++))
do
cleos create key --file key[$w].txt
privatekey=$(sed -ne 's/^Private key: \([^ ]*\).*/\1/p' ~/key[$w].txt)
pubkey=$(sed -ne 's/^Public key: \([^ ]*\).*/\1/p' ~/key[$w].txt)
pubkeyarray+=("$pubkey")
privkeyarray+=("$privatekey")
done
echo "genesis_public_key=${pubkeyarray[0]}" >>config.sh
echo "genesis_private_key=${privkeyarray[0]}" >>config.sh
____HERE
)
SCRIPT="$(cat ~/shell/config.sh) ; $script;"
for i in ${!genesishost[*]} ; do
SCR=${SCRIPT/PASSWORD/${password}}
sshpass -p ${password} ssh -l ${username} ${genesishost[i]} "${SCR}"
done
genesishost、password 和 username 位于 config.sh 文件中。做一些 EOSIO 操作。
我需要什么:
从远程主机,我想在配置文件中附加"genesis_public_key" 和"genesis_private_key",它们位于我正在执行ssh 的本地计算机上。
此代码在远程生成一个新的配置文件并将这些行附加到那里。我需要 ssh 我的本地机器吗?如果是,则本地机器不能总是相同地添加其 ssh 凭据。我怎样才能完成这项任务?请指导。
【问题讨论】:
-
这完全没有意义。而是将
genesis_public_key="ABC"和genesis_private_key="XYZ"放入您在本地执行的命令中,或者在您source之前将echos 本地添加到config.sh。 -
我在远程做一些操作,从远程获取
ABC和XYZ的值。 -
您似乎有一长串问题,这些问题都围绕着似乎本质上是XY problem. 如果您要执行的命令在所有主机上都相同,那么迄今为止最简单的解决方案是只需将静态命令序列传递给
ssh。 -
然后向我们展示一些更真实的东西,而不是 ABC 和 XYZ。仍然没有合理的理由将这些值附加到文件中,而不仅仅是执行它们。
-
编辑了代码。请检查。
标签: bash shell file ssh remote-server