Tim Reimers KA4LFP
2023-Dec-20 22:17 UTC
[Nut-upsuser] Help with CGI upsstats.cgi giving "file not found"
Hi everyone -- I'm having a problem with the CGI scripts for NUT. First, a summary: - I have a RasPI (hereafter referred to as Pi1) running Bullseye in which this all WORKS FINE -- the upsd/upsc/ monitor services, etc - I have a SECOND RasPI (hereafter referred to as Pi2) running Bullseye in which ONLY the CGI scripts do not work. All other (upsc/upsd/systemctl) show normal status and work to retrieve data from the single UPS attached to each Pi. Discussion below is in regard to "PI2", in which CGI scripts don't work. On "Pi1" everything works fine. I have compared many files/permissions/config files, and cannot find a difference between the two Pi. On both of them, running "upsc <ups>@localhost" works fine, and produces output from the UPS. So at a basic level, the UPS is connected to the USB port, the driver is working, and the upsd monitoring service is OK. The essential problem The CGI script returns "file not found" If I execute it from a browser via Apache, I simply get a 500 Internal Server Error. On another site, I discovered that it's possible to simply execute a CGI script directly, if it's a compiled executable. Here's what happens at the CLI by executing the file. root at Pi2 :~# /var/www/cgi-bin/nut/upsstats.cgi -bash: /var/www/cgi-bin/nut/upsstats.cgi: No such file or directory That's different from the suggested scenarios for running upsstats.cgi from the CLI, which were issues with host authentication or "spits a bunch of HTML at you", which would be fine. On "Pi1", the fully working one - that's exactly what happens - calling "upsstats.cgi" from the CLI results in it simply spitting out HTML with the configured UPS detailed out. Running the CGI from a browser > Apache2 on the Pi works exactly as expected What I lack an understanding of is which files in /etc/nut these CGI scripts access, and what permissions are needed. Or if there are other files in other directories that the CGI scripts need. That error, cryptically gives me the impression that the CGI script cannot access some file it needs I've looked at /etc/nut/hosts.conf /etc/nut/upsstats.html /etc/nut/upssstats-single.html /etc/nut/upsset.conf All those files -- which I believe to be the required ones for CGI, appear to be identical on Pi2 as compared to Pi1 Does anyone have any idea which files/permissions that the CGI may require other than the above? I'm not sure if something in /usr/lib /var/wherever, etc are also required? Thanks Tim Some details for those who will want to compare versions, etc. The apache logfile [Tue Dec 19 15:20:42.088991 2023] [cgi:error] [pid 3293] [client 72.250.240.54:31043] AH01215: (2)No such file or directory: exec of '/var/www/cgi-bin/nut/upsstats.cgi' failed: /var/www/cgi-bin/nut/upsstats.cgi [Tue Dec 19 15:20:42.092452 2023] [cgi:error] [pid 3293] [client 72.250.240.54:31043] End of script output before headers: upsstats.cgi [Tue Dec 19 15:20:42.498512 2023] [cgi:error] [pid 3294] [client 72.250.240.54:40731] AH01215: (2)No such file or directory: exec of '/var/www/cgi-bin/nut/upsstats.cgi' failed: /var/www/cgi-bin/nut/upsstats.cgi [Tue Dec 19 15:20:42.502123 2023] [cgi:error] [pid 3294] [client 72.250.240.54:40731] End of script output before headers: upsstats.cgi Permissions on /etc/nut root at spivey:~# ls -la /etc/nut total 64 drwxr-xr-x 1 root nut 292 Dec 18 20:02 . drwxr-xr-x 1 root root 3882 Dec 19 06:14 .. -rwxr-x--- 1 nut nut 675 Dec 6 20:40 etcnutfileperms.txt -rwxr-x--- 1 root root 1148 Dec 18 20:02 hosts.conf -rwxr-x--- 1 nut nut 1543 Dec 6 20:40 nut.conf -rwxr-x--- 1 nut root 1137 Dec 15 21:12 old-hosts.conf -rwxr-x--- 1 nut nut 6170 Dec 18 20:01 ups.conf -rwxr-x--- 1 nut nut 4631 Dec 6 20:40 upsd.conf -rwxr-x--- 1 nut nut 2185 Dec 18 19:54 upsd.users -rwxr-x--- 1 root root 1263 Dec 18 20:01 upsmon.conf -rwxr-x--- 1 nut nut 5634 Dec 6 20:40 upssched.conf -rwxr-x--- 1 nut nut 1415 Dec 15 21:36 upsset.conf -rwxr-x--- 1 nut root 3603 Dec 6 20:40 upsstats.html -rwxr-x--- 1 nut root 6446 Dec 6 20:40 upsstats-single.html root at spivey:~# ls -la /etc/ | grep nut drwxr-xr-x 1 root nut 292 Dec 18 20:02 nut root at Pi2:~# upsc tripplite at localhost Init SSL without certificate database battery.charge: 100 . . root at Pi2:~# /usr/sbin/upsd -DD -a tripplite at localhost Network UPS Tools upsd 2.7.4 root at Pi2:~# root at spivey:~# file /var/www/cgi-bin/nut/upsstats.cgi /var/www/cgi-bin/nut/upsstats.cgi: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, BuildID[sha1]=52f4d9e65d096388e4b3cb3df2673bf59bbdfa70, for GNU/Linux 3.2.0, stripped root at Pi2:~# root at Pi1:~# #### Tim, KA4LFP#### #### Morse code, the original digital mode Real radios glow in the dark. SWAN rule number 1: Life is too short to have a puny signal. ? K0MHP SWAN rule number 2: No menu required. ? K0MHP ## -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://alioth-lists.debian.net/pipermail/nut-upsuser/attachments/20231220/26f83bc1/attachment.htm>
Charles Lepple
2023-Dec-21 12:24 UTC
[Nut-upsuser] Help with CGI upsstats.cgi giving "file not found"
On Dec 20, 2023, at 5:17?PM, Tim Reimers KA4LFP via Nut-upsuser wrote:> > First, a summary: > - I have a RasPI (hereafter referred to as Pi1) running Bullseye in which this all WORKS FINE -- the upsd/upsc/ monitor services, etc > - I have a SECOND RasPI (hereafter referred to as Pi2) running Bullseye in which ONLY the CGI scripts do not work. > All other (upsc/upsd/systemctl) show normal status and work to retrieve data from the single UPS attached to each Pi. >I'm not quite sure what is missing[*], but when you get no output from a program, and a "file not found" error from bash, it is usually a missing shared library that prevents the executable from fully loading. [*] the confusing part is that the other NUT command line tools aren't affected. Was the CGI program installed from the Debian nut-cgi package? Or was it built from source, or copied from the other Pi? You should get output similar to this from ldd (this is from an amd64 Ubuntu system, so details may differ, but consider overall structure): $ ldd /usr/lib/cgi-bin/nut/upsstats.cgi linux-vdso.so.1 (0x00007fff1a99b000) libupsclient.so.4 => /lib/x86_64-linux-gnu/libupsclient.so.4 (0x00007eff6ebec000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007eff6ebc9000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007eff6e9d7000) libnss3.so => /usr/lib/x86_64-linux-gnu/libnss3.so (0x00007eff6e888000) libssl3.so => /usr/lib/x86_64-linux-gnu/libssl3.so (0x00007eff6e829000) libplds4.so => /usr/lib/x86_64-linux-gnu/libplds4.so (0x00007eff6e824000) libplc4.so => /usr/lib/x86_64-linux-gnu/libplc4.so (0x00007eff6e81b000) libnspr4.so => /usr/lib/x86_64-linux-gnu/libnspr4.so (0x00007eff6e7db000) /lib64/ld-linux-x86-64.so.2 (0x00007eff6ec29000) libnssutil3.so => /usr/lib/x86_64-linux-gnu/libnssutil3.so (0x00007eff6e7a8000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007eff6e7a2000) If any of the libraries don't have a path after "=>", that's something to investigate on the working Pi (e.g. "dpkg --search libnss3.so <http://libnss3.so/>" to see which package provides that library) - Charles
Jim Klimov
2023-Dec-21 17:24 UTC
[Nut-upsuser] Help with CGI upsstats.cgi giving "file not found"
Well, it seems both apache and bash literally say they did not find an executable there; it is not about NUT configs. Is the file present? (is "spivey" same as "pi2" in "screenshots" posted?) Does it have the exec bit set? Are all directories at least "executable" by apache user? Jim On Thu, Dec 21, 2023, 13:11 Tim Reimers KA4LFP via Nut-upsuser < nut-upsuser at alioth-lists.debian.net> wrote:> > Hi everyone -- > > I'm having a problem with the CGI scripts for NUT. > > First, a summary: > - I have a RasPI (hereafter referred to as Pi1) running Bullseye in > which this all WORKS FINE -- the upsd/upsc/ monitor services, etc > - I have a SECOND RasPI (hereafter referred to as Pi2) running Bullseye in > which ONLY the CGI scripts do not work. > All other (upsc/upsd/systemctl) show normal status and work to retrieve > data from the single UPS attached to each Pi. > > Discussion below is in regard to "PI2", in which CGI scripts don't work. > On "Pi1" everything works fine. > > I have compared many files/permissions/config files, and cannot find a > difference between the two Pi. > > On both of them, running "upsc <ups>@localhost" works fine, and produces > output from the UPS. > So at a basic level, the UPS is connected to the USB port, the driver is > working, and the upsd monitoring service is OK. > > > The essential problem > The CGI script returns "file not found" > If I execute it from a browser via Apache, > I simply get a 500 Internal Server Error. > > On another site, I discovered that it's possible to simply execute a CGI > script directly, if it's a compiled executable. > > Here's what happens at the CLI by executing the file. > root at Pi2 :~# /var/www/cgi-bin/nut/upsstats.cgi > -bash: /var/www/cgi-bin/nut/upsstats.cgi: No such file or directory > > That's different from the suggested scenarios for running upsstats.cgi > from the CLI, which were issues > with host authentication or "spits a bunch of HTML at you", which would be > fine. > > On "Pi1", the fully working one - that's exactly what happens - calling > "upsstats.cgi" from the CLI > results in it simply spitting out HTML with the configured UPS detailed > out. > Running the CGI from a browser > Apache2 on the Pi works exactly as > expected > > What I lack an understanding of is which files in /etc/nut > these CGI scripts access, and what permissions are needed. > Or if there are other files in other directories that the CGI scripts need. > That error, cryptically gives me the impression that the CGI script cannot > access some file it needs > I've looked at > /etc/nut/hosts.conf > /etc/nut/upsstats.html > /etc/nut/upssstats-single.html > /etc/nut/upsset.conf > > All those files -- which I believe to be the required ones for CGI, appear > to be identical on Pi2 as compared to Pi1 > > Does anyone have any idea which files/permissions that the CGI may require > other than the above? > I'm not sure if something in /usr/lib /var/wherever, etc are also > required? > > Thanks Tim > > Some details for those who will want to compare versions, etc. > > The apache logfile > [Tue Dec 19 15:20:42.088991 2023] [cgi:error] [pid 3293] [client > 72.250.240.54:31043] AH01215: (2)No such file or directory: exec of > '/var/www/cgi-bin/nut/upsstats.cgi' failed: > /var/www/cgi-bin/nut/upsstats.cgi > [Tue Dec 19 15:20:42.092452 2023] [cgi:error] [pid 3293] [client > 72.250.240.54:31043] End of script output before headers: upsstats.cgi > [Tue Dec 19 15:20:42.498512 2023] [cgi:error] [pid 3294] [client > 72.250.240.54:40731] AH01215: (2)No such file or directory: exec of > '/var/www/cgi-bin/nut/upsstats.cgi' failed: > /var/www/cgi-bin/nut/upsstats.cgi > [Tue Dec 19 15:20:42.502123 2023] [cgi:error] [pid 3294] [client > 72.250.240.54:40731] End of script output before headers: upsstats.cgi > > Permissions on /etc/nut > root at spivey:~# ls -la /etc/nut > total 64 > drwxr-xr-x 1 root nut 292 Dec 18 20:02 . > drwxr-xr-x 1 root root 3882 Dec 19 06:14 .. > -rwxr-x--- 1 nut nut 675 Dec 6 20:40 etcnutfileperms.txt > -rwxr-x--- 1 root root 1148 Dec 18 20:02 hosts.conf > -rwxr-x--- 1 nut nut 1543 Dec 6 20:40 nut.conf > -rwxr-x--- 1 nut root 1137 Dec 15 21:12 old-hosts.conf > -rwxr-x--- 1 nut nut 6170 Dec 18 20:01 ups.conf > -rwxr-x--- 1 nut nut 4631 Dec 6 20:40 upsd.conf > -rwxr-x--- 1 nut nut 2185 Dec 18 19:54 upsd.users > -rwxr-x--- 1 root root 1263 Dec 18 20:01 upsmon.conf > -rwxr-x--- 1 nut nut 5634 Dec 6 20:40 upssched.conf > -rwxr-x--- 1 nut nut 1415 Dec 15 21:36 upsset.conf > -rwxr-x--- 1 nut root 3603 Dec 6 20:40 upsstats.html > -rwxr-x--- 1 nut root 6446 Dec 6 20:40 upsstats-single.html > root at spivey:~# ls -la /etc/ | grep nut > drwxr-xr-x 1 root nut 292 Dec 18 20:02 nut > > > root at Pi2:~# upsc tripplite at localhost > Init SSL without certificate database > battery.charge: 100 > . > . > > > root at Pi2:~# /usr/sbin/upsd -DD -a tripplite at localhost > Network UPS Tools upsd 2.7.4 > > > root at Pi2:~# > root at spivey:~# file /var/www/cgi-bin/nut/upsstats.cgi > /var/www/cgi-bin/nut/upsstats.cgi: ELF 32-bit LSB executable, ARM, EABI5 > version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, > BuildID[sha1]=52f4d9e65d096388e4b3cb3df2673bf59bbdfa70, for GNU/Linux > 3.2.0, stripped > root at Pi2:~# > root at Pi1:~# > > > > > > #### > Tim, KA4LFP#### > > #### > Morse code, the original digital mode > Real radios glow in the dark. > SWAN rule number 1: Life is too short to have a puny signal. ? K0MHP > SWAN rule number 2: No menu required. ? K0MHP > > ## > _______________________________________________ > Nut-upsuser mailing list > Nut-upsuser at alioth-lists.debian.net > https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://alioth-lists.debian.net/pipermail/nut-upsuser/attachments/20231221/f96b6507/attachment-0001.htm>