shell脚本中执行程序内部命令

背景

最近项目需求中提到使用sftp进行文件上传,但是生产服务器是无法直接连接的,需要通过堡垒机连接,概念图如下。
image.png
本博文即将要实现的内容如下图所示。

image.png

摘要

也就是说,当我们创建一个新的进程的时候,运行当前脚本的的shell将会在运行这个命令后进入阻塞状态,等待这个进程结束后才会继续。也就是如上图实际运行情况所示。但是并不符合我们的预期。
换句话说,也就是我们第一行写的是运行一个程序,第二行是第一行运行的那个程序中需要执行的输入,而我们的写法并不会输入到第一行运行的那个程序中。

实际实现

echo Processing...
sftp mysftp@127.0.0.1
put test.sh /upload/test.sh
echo Done...

image.png

echo Processing...
sftp mysftp@127.0.0.1 <<- EOF
put test.sh /upload/test.sh
exit
EOF
echo Done...

image.png

上图皆可说明情况。

解释

在这种情况下,目前还没有实现输入密码,但是巧的是,真正项目上是通过RSA进行验证的,不需要密码,由于是Demo和时间关系,没有做那些东西,但是PUT命令的输入地点是正确的,达成了最终目的。

评论 0

还没有评论,来说点什么吧。

提交后需要审核才会公开。