Bash - 如何终止脚本并运行下一个脚本

时间:2015-02-21 01:00:58

标签: linux bash shell

我在windows上使用cygwin来开发vsftp 2.3.4作为一个类项目,我知道如何做到这一点我实际上有我的shell代码如下(这是我第一次使用它)

!/usr/bin/bash
command1="ncat -v "$1" 21"
echo `$command1`
echo `USER X:)\r\nPASS X\r\n`
command2="ncat -v "$1" 6200"
echo `$command2`

所以我需要触发与用户x :)的连接然后它将在端口6200上打开shell。如果我手动输入终端然后输入“ncat -v ip 21 [enter] USER x: )[enter] PASS x [enter]“,我现在可以使用ctrl + C退出当前的shell脚本,然后输入”ncat -v ip 6200“开始利用。

问题是如果我运行上面的shell代码,它会在输入“PASS x”后挂起并且不会退出,因此下一代代码将不会被执行。 (除非我在终端中按c + + C然后它会再次开始运行)。

我希望使用Ctrl + C的过程是自动的,无论如何我能做到吗?

感谢您阅读

1 个答案:

答案 0 :(得分:1)

使用here-doc为命令提供输入:

ncat -v "$1" 21 <<EOF
USER X:)
PASS X
EOF
ncat -v "$1" 6200

要在后台运行,请在&之后添加<<EOF

ncat -v "$1" 21 <<EOF &
USER X:)
PASS X
EOF

您的脚本正在挂起,因为ncat正在从连接到终端的标准输入读取,因此它正在等待您键入内容。在ncat退出之前,它不会转到下一个命令。

如果你想使用echo为命令提供输入,你必须管道它:

echo -e "USER X:)\r\nPASS X\r\n" | ncat -v "$1" 21
相关问题