ApacheGUI 错误 ./run.sh: 1: [: -ne: 意外的运算符

ApacheGUI Error ./run.sh: 1: [: -ne: unexpected operator

我已经在 Linux Debian 的以下目录中安装了 Apache GUI

/usr/local/apachegui/ApacheGUI/bin 

按照本网页所示的以下说明进行操作: https://www.howtoforge.com/tutorial/ubuntu-apache-gui/

在指令的末尾,它说 运行 以下命令:

sudo ./run.sh

当我运行执行上述命令时,我得到以下输出但有错误

./run.sh: 1: [: -ne: unexpected operator

终端底部 window 开始提到 tomcat 并且在 运行ning run.sh 命令

之后如上述教程网页中所述

Your ApacheGUI is now starting and listening on port 9999. Next, open your web browser and type the URL >http://your-server-ip:9999/ApacheGUI. You will >be redirected to the following page (ApachiGUI home page)

在我的例子中,当我用我的 IP 地址或本地主机输入上面的 URL 我的 Chrome 浏览器打印:无法访问输出站点

所以我搜索以检查端口 9999 是否已启用并监听我的情况我无法在端口列表中看到端口 9999 所以 运行 以下命令和终端 window 没有'从这里产生任何输出我假设端口 9999 关闭

pi@Home:~ $ ss -na | grep :9999

使用以上命令终端后windowreturn回到ip@home:$

现在我打开一个单独的终端 window 并 ping 端口 9999 结果,这个终端 window 挂起现在很明显我的服务器没有打开端口 9999 所以打开关闭端口 I 运行 以下命令

Open port command:

sudo iptables -A INPUT -p tcp --dport 9999 -j ACCEPT

为了更新防火墙规则,我重启了 iptables 服务

sudo iptables -L

输出:

pi@Home:~ $ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:9999

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

现在我再次检查我服务器上的开放端口列表,我仍然看不到端口 9999

完成所有这些步骤后,执行以下命令:

pi@Home:/usr/local/apachegui/ApacheGUI/bin $ ./run.sh

输出:

Using CATALINA_BASE: /usr/local/apachegui/ApacheGUI/tomcat Using CATALINA_HOME: /usr/local/apachegui/ApacheGUI/tomcat Using CATALINA_TMPDIR: /usr/local/apachegui/ApacheGUI/tomcat/temp Using JRE_HOME: /usr Using CLASSPATH:

/usr/local/apachegui/ApacheGUI/tomcat/bin/bootstrap.jar:/usr/local/apachegui/ApacheGUI/tomcat/bin/tomcat-juli.jar Tomcat started.

看起来最初的错误已解决,但我仍然无法从我的浏览器访问 ApacheGUI 仍然无法解决上述错误任何人都可以建议解决此问题的方法吗?

run.sh 文件是一个写得很糟糕的 shell 脚本,其内容为:

if [ $UID -ne 0 ]; then
  sudo ../tomcat/bin/startup.sh
  exit
fi

exec ../tomcat/bin/startup.sh

只需执行tomcat/bin/startup.sh。此脚本可能会以多种方式失败:

  • 没有 shebang (#!interpreter_name),所以它使用 /bin/sh 或任何默认的 shell 执行,
  • UID不是POSIX变量(cf.),所以结果为空,test[)只看到-ne 0。通常在这种情况下,如果变量不为空,则应引用或测试该变量,
  • 路径 ../tomcat/bin/startup.sh 是相对于 当前目录 ,而不是脚本的目录。

通过执行以下测试,您将学习端口测试和端口配置,在这些测试结束时,您将能够发现服务器端口是否存在问题,或者您必须检查浏览器的设置。就我而言,我无意中走了很长的路,我将测试计划分为以下三个部分

Server Ports and Browser

如果您遇到同样的问题,我的建议是进行故障排除

Server Browser and then test Ports

通过执行 tomcat/bin/startup.sh 它确实像 run.sh 一样成功启动了服务器(如上面问题和给出的答案中所述)但浏览器仍然无法加载 localhost:9999/ApacheGUI 索引页面因为服务器的初始错误

./run.sh: 1: [: -ne: unexpected operator

已解决(如问题所示),但浏览器仍然无法加载 GUI 页面,因此出于这个原因,只是查明端口 9999 本身是否存在问题,或者是否有其他原因导致 localhost 无法加载通过端口 9999 与浏览器通信我进行了以下测试:

我相信以下信息适合想要排除端口故障的测试人员,但如果您认为您的端口没有问题并且问题可能出在浏览器上,请访问以下 link 我在哪里8080端口有同样的问题,我通过修改浏览器设置解决了这个问题:


重新启动我的服务器并在终端中执行以下命令

tomcat/bin/startup.sh

输出显示

Tomcat started

通过此输出,我知道 ApacheGUI 已安装并且服务器已启动并且 运行。

Q: if the server is running so whey localhost:9999/ApacheGUI index page is unable to load?

让我们测试端口 9999 并执行以下步骤来检查它是您计算机上的端口导致此错误还是其他原因

步骤NO:1

pi@Home:~ $ nc -vz 192.168.0.16 9999
Connection to 192.168.0.16 9999 port [tcp/*] succeeded!

StepNO:2 在 Linux 终端上键入命令以测试端口 9999(回车)

pi@Home:~ $ sudo ls | nc -l -p 9999
  • (光标开始闪烁,无输出)

第 3 步 然后打开 Window 计算机并打开 PuTTY 客户端

通过在 PuTTY 客户端界面中键入以下凭据,从 window 计算机建立 SSH 连接:

Server: 192.168.0.16 port 9999 (Press Enter)

9999端口打开成功后会得到如下结果

Linux 服务器终端 (StepNO:2) 光标闪烁的地方开始响应 客户端请求并打印以下行(光标仍在闪烁的地方):

SSH-2.0-PuTTY_Release_0.74

步骤NO:4 打开一个新终端 window 并键入另一个命令以确保端口 9999 确实打开并响应(Linux StepNO:2 中的服务器终端仍然打开)

pi@Home:~ $ nmap -p 9999 192.168.0.16

输出:

Starting Nmap 7.70 ( https://nmap.org ) at 2021-03-05 23:44 GMT Nmap scan report for 192.168.0.16 Host is up (0.00049s latency).

PORT STATE SERVICE 9999/tcp open abyss

Nmap done: 1 IP address (1 host up) scanned in 0.26 seconds

此阶段确认我已成功打开端口 9999 并且该端口正在响应 TCP 协议

步骤NO:5

在同一个 Linux 服务器终端(第 2 步)我再次输入以下命令:

sudo ls | nc -l -p 9999(输入)

  • (光标开始闪烁)

现在我已经打开浏览器并输入 ApacheGUI URL

192.168.0.16:9999/ApacheGUI(输入)

Linux 服务器终端从 StepNO:2 光标闪烁处开始响应 URL 从浏览器请求并在终端中打印以下行 window:

输出:

GET /ApacheGUI/ HTTP/1.1 Host: 192.168.0.16:9999 Connection: keep-alive Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (X11; Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.197 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.9

但是:我的 ApacheGUI 索引页面仍然无法加载并显示以下错误消息

This site can’t be reached192.168.0.16 refused to connect. Try:

Checking the connection Checking the proxy and the firewall ERR_CONNECTION_REFUSED

在这个阶段,我 100% 确定我安装的服务器已启动并且 运行。我的服务器中的端口 9999 是开放的并且可以正常工作,所以除了浏览器之外没有其他东西可以导致这个错误所以我按照下面 link:[=28= 的回答中描述的步骤来调整我的浏览器设置]


结果:连接成功 ApacheGUI 索引页面终于加载到浏览器。