在 bash 脚本中从远程主机访问和附加本地文件

Access and append local file from remote host in bash script

从我的 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: \([^ ]*\).*//p' ~/key[$w].txt)
        pubkey=$(sed -ne 's/^Public key: \([^ ]*\).*//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

genesishostpasswordusernameconfig.sh 文件中。做一些 EOSIO 操作。

What I need:

从远程主机,我想在我正在执行 ssh.[=20= 的本地计算机上附加带有 "genesis_public_key""genesis_private_key" 的配置文件]

此代码在远程生成一个新的配置文件并将这些行附加到那里。我需要 ssh 我的本地机器吗?如果是,则本地计算机不能始终相同以添加其 ssh 凭据。我怎样才能完成这个任务?请指导

该脚本显然只能访问远程服务器上的文件,而不是让它写入(不存在的)文件,只需让它写出您想要添加到本地文件的输出,然后让来电者做追加。

#!/bin/bash

source ~/shell/config.sh
script=$(cat <<\____HERE

   pubkeyarray=()
   privkeyarray=()
   for (( w=1; w<=3; w++))
   do
        # ... whatever ...
   done
   echo "genesis_public_key=${pubkeyarray[0]}"    # no redirect
   echo "genesis_private_key=${privkeyarray[0]}"  # no redirect

____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 >>config.sh

显然,如果多个远程主机打印出同名变量的赋值,config.sh中的最后一个赋值将替换所有较早的赋值。