Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 通过ssh将脚本和二进制数据传输到stdin_Bash_Ssh_Tar - Fatal编程技术网

Bash 通过ssh将脚本和二进制数据传输到stdin

Bash 通过ssh将脚本和二进制数据传输到stdin,bash,ssh,tar,Bash,Ssh,Tar,我想远程执行一个bash脚本,它使用tarball并对其执行一些逻辑。诀窍是,我只想使用一个ssh命令来完成它(而不是对tarball使用scp,然后对脚本使用ssh) bash脚本如下所示: cd /tmp tar -zx ./archive/some_script.sh rm -r archive 我意识到我可以简单地将这个脚本重新格式化为一行代码并使用 tar -cz ./archive | ssh $HOST bash -c '<commands>' tar-cz./ar

我想远程执行一个bash脚本,它使用tarball并对其执行一些逻辑。诀窍是,我只想使用一个ssh命令来完成它(而不是对tarball使用
scp
,然后对脚本使用
ssh

bash脚本如下所示:

cd /tmp
tar -zx
./archive/some_script.sh
rm -r archive
我意识到我可以简单地将这个脚本重新格式化为一行代码并使用

tar -cz ./archive | ssh $HOST bash -c '<commands>'
tar-cz./archive | ssh$HOST bash-c''

但我的实际脚本非常复杂,我必须通过stdin将它传输到
bash
。这里的挑战是
ssh
只提供了一个输入管道(stdin),我想将其用于bash脚本和tarball。

我提出了两个解决方案,都包括stdin中的bash脚本和tarball

1.将base64编码的tarball嵌入到heredoc中 在这种情况下,服务器接收到一个bash脚本,其中tarball被嵌入到herdoc中:


base64-d相当聪明。从来没有做过那种级别的dbl嵌入。祝你好运,继续发帖!
ssh $HOST bash -s < <(
# Feed script.
cat <<'EOF'
function main() {
  cd /tmp
  tar -zx
  ./archive/some_script.sh
  rm -r archive
}
main
EOF
# Create local tarball and pipe it
tar -cz ./archive
)