mit at .pm script ausführen

Begonnen von ChrisW, 25 Januar 2019, 20:02:18

Vorheriges Thema - Nächstes Thema

ChrisW

Hallo,
ich will per at alle X Minuten ein script ausführen liegt /opt/fhem/
Per sudo bekomme ich folgende meldung im log:
2019.01.25 19:52:15 3: at_mysql2influxdb: -1

Wir gehen davon aus, dass der lokale Systemadministrator Ihnen die
Regeln erklärt hat.  Normalerweise läuft es auf drei Regeln hinaus:

    #1) Resprektieren Sie die Privatsphäre anderer.
    #2) Denken Sie nach bevor Sie tippen.
    #3) Mit großer Macht kommt große Verantwortung.

sudo: Kein TTY vorhanden und kein »askpass«-Programm angegeben


Ohne sudo kommt im Log nur: at_mysql2influxdb: -1
Scheint aber nicht ausgeführt zu werden..

List:


Internals:
   COMMAND    {system('sudo /opt/fhem/mysql2influx__db_fhem.pm&');}
   DEF        +*00:15:00 {system('sudo /opt/fhem/mysql2influx__db_fhem.pm&');}
   FUUID      5c4b29a8-f33f-678b-8440-ee3a25d3439cad7a
   NAME       at_mysql2influxdb
   NR         989
   NTM        20:07:03
   PERIODIC   yes
   RELATIVE   yes
   REP        -1
   STATE      Next: 20:07:03
   TIMESPEC   00:15:00
   TRIGGERTIME 1548443223.99176
   TRIGGERTIME_FMT 2019-01-25 20:07:03
   TYPE       at
   .attraggr:
   .attrminint:
   READINGS:
     2019-01-25 19:52:03   state           Next: 20:07:03
Attributes:
   DbLogExclude .*
   room       Logging
Raspberry PI3 mit allem möglichen.

Otto123

#1
Hi,

ich würde als erstes mal versuchen den commandtyp 2 zu verwenden:
https://commandref.fhem.de/#command
Und zwar in der FHEm Kommandozeile, und bitte wirklich so wie es dasteht: Nichts davor nichts dahinter und schön die " mitschreiben!!!  ;D

"/opt/fhem/mysql2influx__db_fhem.pm"

Weiß er das er perl verwenden soll? Oder besser so
"perl /opt/fhem/mysql2influx__db_fhem.pm"

system() liefert unter FHEM immer nur eine 1 zurück.
Braucht das Script denn sudo?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Wernieman

#2
1. Ich würde Dir empfehlen, anstatt system(...&) gleich ein "" zu verwenden, das macht gleich automatisch "non-blockin"
2. Dein User fhem darf sudo mit em Script nur mit Passwort. Da keine Eingabeaufforderung (kein tty), kann dieses nicht eingegeben werden -> abbruch
3. Baue Dir in Dein Script mehr Debugausgaben! Du hast in Sriptproblem!
4. Mal als FHEM-user ausprobiert, das Scipt zu starten?
5. Es ist in bash sinvoll, mit viel Leerzeichen zu arbeiten! Also vor dem letzten & bitte ein Leerzeichen .....

Ansonsten .. gib uns doch mal den inhalt, dann können wir Dir mehr sagen ....
Und bitte auch ein "ls -lha /opt/fhem/mysql2influx__db_fhem.pm"

Edit:
Otto war schneller, da ich aber mitlerweile viel geschrieben habe, lasse ich es stehen ....

@Otto:
Alternativ könnte er in der ersten zeile des Scriptes auch den Interpreter angeben ... also
#!/usr/bin/perl
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

ChrisW

also wenn ich mich mit pi einlogge muss ich es aus der console mit sudo ./mysql2influx__db_fhem.pm starten ohne geht nicht.
chown hab ich auf fhem gemacht.
Es geht um das hier ;
https://forum.fhem.de/index.php/topic,71551.msg838940.html#msg838940

Da steht mit perl starten. Notfalls mach ich nen cron oder so aber hätte es  gerne in fhem gestartet
Raspberry PI3 mit allem möglichen.

Otto123

#4
Wenn es wirklich sein muss, ich glaube es (wie Werner auch schreibt) noch nicht!
Dann gib fhem begrenzte!!! sudo Rechte, wie das geht steht hier: https://heinz-otto.blogspot.com/2017/08/raspberry-ausschalten-mit-fhem.html

Musst Du entsprechend anpassen -> bedeutet: Zwischen copy & paste gehört nicht "&" sondern der Kopf  ;D .
Arbeite wie Werner geschrieben hat am Besten mit vollen Pfaden und mit Perl Aufruf und schreib das auch so in die 011_fhem-nopasswd.
/usr/bin/perl /opt/fhem/mysql2influx__db_fhem.pm

Wahrscheinlich braucht pi doch bloß sudo weil er kein execute Recht hat. Also versuche bitte den Aufruf mit /usr/bin/perl
Wenn Fragen fragen  ;)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Wernieman

Sorry aber das Script braucht keine sudo rechte.

Ich möchte mich wiederholen:
Zitat4. Mal als FHEM-user ausprobiert, das Scipt zu starten?
5. Es ist in bash sinvoll, mit viel Leerzeichen zu arbeiten! Also vor dem letzten & bitte ein Leerzeichen .....

und bitte mal:
ls -lha /opt/fhem/mysql2influx__db_fhem.pm
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

ChrisW

#6
pi@raspberrypi:/opt/fhem $ ls -lha /opt/fhem/mysql2influx__db_fhem.pm
-rwxr-xr-x 1 fhem root 3,5K Jan 25 16:16 /opt/fhem/mysql2influx__db_fhem.pm

Mit dem leerzeichen vor dem & klappt wohl auch nicht.
Fhem mehr rechte geben hmm ungerne notfalls halt cron erstellen
Raspberry PI3 mit allem möglichen.

Wernieman

Mal als FHEM probiert, es als User fhem zu starten?

das mit den Rechnen der User pi es nicht mehr darf, dürfte Dir eigentlich auffallen ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

ChrisW

Zitat von: Wernieman am 25 Januar 2019, 20:49:04
Mal als FHEM probiert, es als User fhem zu starten?

das mit den Rechnen der User pi es nicht mehr darf, dürfte Dir eigentlich auffallen ....
Wenn ich mal das Passwort wüsste :D Weiss nicht kann es ja ändern mit sudo aber ob das auswirkungen hat wenn ich das ändere ?
Raspberry PI3 mit allem möglichen.

Otto123

fhem hat kein passwort ...
Wieder anderes Thema. Wir stolpern von einer Baustelle in die nächste  :-X
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Wernieman

#10
sudo su -s /bin/bash fhem
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

ChrisW

haha ja sorry so tief hab ich mich bisher noch nicht damit beschäftigt :D
Schau mir morgen mal den link mit den fhem rechten an
Raspberry PI3 mit allem möglichen.

Wernieman

O.K. .. obiges ist etwas "Admin-bash-Magie", aber durchaus ernst Gemeint. Um vom User Pi zum User fhem zu werden, ohne irgendetwas anpassen zu müssen ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Otto123

Arbeite lieber zuerst daran, dass das Script kein sudo braucht. sudo ist ein dünnes Brett zum bohren.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Wernieman

Um es kurz zu machen:
copiere das Script erstmal in den Homeordner von Pi und lasse es als pi laufen
cp /opt/fhem/mysql2influx__db_fhem.pm ~
cd ~
perl /opt/fhem/mysql2influx__db_fhem.pm


Wenn das funktioniert, könnenw ir uns um Deine anderen probleme kümmern ...

(Sorry und Danke an Otto, denke manchmal einfach "zu Hoch")
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html