Re: Edited: <on-connect> / <on-disconnect> not working
Philipp Schafft <[email protected]> Wed, 20 Sep 2023 15:44:23 +0000
| Newsgroups | gmane.comp.audio.icecast.general |
|---|---|
| Organization | Löwenfelsen UG (haftungsbeschränkt) |
| Message-ID | <80ffb48ae7ffb2a4922c3e923513a4927d13ca21.camel@de.loewenfelsen.net> |
Good morning, On Wed, 2023-09-20 at 08:24 -0700, Jack Elliott wrote: > Hi all, > I am still trying to debug this. Summary, I am using <on-connect> in > my icecast.xml to launch an email when a source-client connects. > Here is the line in icecast.xml: > <on-connect>/home/kpovdjs/bin/email_onconnect.sh</on-connect> > The problem is that this script doesn't do anything when icecast runs > it. > The script works if I run it as user kpovdjs (me). But if I su to > user icecast2, it does nothing. > "email_onconnect.sh" is: > #!/bin/bash > set -x > > # [email protected] > > printf "To: [email protected]\nFrom: [email protected]\nS > ubject: Remote host has connected to mountpoint $1 on the > Backstream\n\n KPOV Icecast server on IcecastPi has detected a > connection on the backstream." > /home/kpovdjs/bin/on_connect.txt > /usr/bin/msmtp [email protected] < > /home/kpovdjs/bin/on_connect.txt >/home/kpovdjs/bin/msmtp.log 2>&1 Your printf is wrong here. NEVER do something like: printf "bla $blubb bla\n"; ALWAYS do: printf "bla %s bla\n" "$blubb"; That is exactly why we use printf in the first place. This is the reason it exists. Also you can just pipe your output between the commands. No need for a tempfile (which also adds many problems, from permissions to race conditions). > If I run it as user kpovdjs (me), it sends the email, and this is the > debug output: > kpovdjs@Icecast-Pi:~/bin $ ./email_onconnect.sh > + printf 'To: [email protected]\nFrom: [email protected]\ > nSubject: Remote host has connected to mountpoint on the > Backstream\n\n KPOV Icecast server on IcecastPi has detected a > connection on the backstream.' > + /usr/bin/msmtp [email protected] > But as user icecast2, the debug output is the same, but no email > sent: > icecast2@Icecast-Pi:/home/kpovdjs/bin$ ./email_onconnect.sh > + printf 'To: [email protected]\nFrom: [email protected]\ > nSubject: Remote host has connected to mountpoint on the > Backstream\n\n KPOV Icecast server on IcecastPi has detected a > connection on the backstream.' > + /usr/bin/msmtp [email protected] Are you sure /usr/bin/msmtp works as the Icecast user? Have you tried to run that script as the same user as Icecast? e.g.: sudo -u icecast /path/to/script > For debug purposes, I have rwxrwxrwx permission set from / and down > to and including the script. > -rwxrwxrwx 1 kpovdjs kpovdjs 414 Sep 17 10:59 email_onconnect.sh I hope that is a really really bad joke. > For further debug purposes, I made a copy of the .sh script and > chowned it to user icecast2. > -rwxr-xr-x 1 icecast2 icecast 414 Sep 20 08:08 > email_onconnect_usericecast2.sh > It also does not send the email when I invoke it as user icecast2. > The "set -x" debug output is the same. > At this point it seems that this is not a icecast issue, per se, but > some sneaky subtle weird annoying little Linux thing. However, if > anyone here has an idea on how I might solve it, it would be very > much appreciated. Not the wording I would use. You could check Icecast's error.log to see if it reports a problem. Other than that you really first need to establish that the script actually works running as that user. > Thank you! > =========================== > > Very cool, I haven't encountered the "set -x" debug flag before. > However, the output isn't as interesting as I hoped: > > icecast2@Icecast-Pi:/home/kpovdjs/bin$ ./email_onconnect.sh > + printf 'To:[email protected]\nFrom:[email protected]\nS > ubject: Remote host has connected to mountpoint on the Backstream\n\n > KPOV Icecast server on IcecastPi has detected a connection on the > backstream.' > + /usr/bin/[email protected] > icecast2@Icecast-Pi:/home/kpovdjs/bin$ > > Thank you! > > > Hi > > > > For debuging purpose put > > set -x in the row after #!/bin/bash > > and execute the script. Post the whole output here. > > > > Cheers > > Tom > > Am 17. Sept. 2023, 19:42 +0200 schrieb Jack Elliott < > > [email protected]>: > > > Hi Jordan, > > > > > > Here is my script: > > > > > > #!/bin/bash > > > > > > #[email protected] > > > > > > printf "To:[email protected]\nFrom:[email protected]\ > > > nSubject: Remote host has connected to mountpoint $1 on the > > > Backstream\n\n KPOV Icecast server on IcecastPi has detected a > > > connection on the backstream." > > > > /home/my_username/bin/on_connect.txt > > > /usr/bin/[email protected] < > > > /home/my_username/bin/on_connect.txt > > > >/home/my_username/bin/msmtp.log 2>&1 > > > > > > This script has rwx set for everyone (for debugging). > > > > > > Thank you! > > > > > > -- > > > Jack Elliott > > > Director of Classical Music Programming > > > High Desert Community Radio > > > KPOV Bend, Oregon > > > On 9/17/23 8:25 AM, Jordan Erickson wrote: > > > > Hi Jack, > > > > > > > > You said: > > > > > > > > --- > > > > Okay now that I am user icecast2, let me see if the script I > > > > want the Icecast server to run <on-connect> runs, so . . . > > > > icecast2@icecast-Pi: $ ./email_onconnect.sh > > > > > > > > and the prompt returns immediately, no error message, but no > > > > email received. But if I su back to my_username and try the > > > > script, it runs and an email is received. > > > > > > > > --- > > > > > > > > This tells me that your script is not doing what it needs to do > > > > as the Icecast user. Since you're doing it outside of Icecast, > > > > it's not the <on-connect> or <on-disconnect> triggers that are > > > > failing. It would be helpful if you could paste your script > > > > (sensitive info like passwords removed) here. > > > > > > > > > > > > Cheers, > > > > Jordan > > > > https://subj.am/ -- Philipp Schafft (CEO/Geschäftsführer) Telephone: +49.3535 490 17 92 Website: https://www.loewenfelsen.net/ Follow us: https://www.linkedin.com/company/loewenfelsen/ Geschäftsführer/CEO: Philipp Schafft Löwenfelsen UG (haftungsbeschränkt) Registration number: Bickinger Straße 21 HRB 12308 CB 04916 Herzberg (Elster) VATIN/USt-ID: Germany DE305133015 _______________________________________________ Icecast mailing list [email protected] http://lists.xiph.org/mailman/listinfo/icecast