FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: ChrisW am 25 Januar 2019, 20:02:18

Titel: mit at .pm script ausführen
Beitrag von: ChrisW am 25 Januar 2019, 20:02:18
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
Titel: Antw:mit at .pm script ausführen
Beitrag von: Otto123 am 25 Januar 2019, 20:06:05
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
Titel: Antw:mit at .pm script ausführen
Beitrag von: Wernieman am 25 Januar 2019, 20:07:23
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
Titel: Antw:mit at .pm script ausführen
Beitrag von: ChrisW am 25 Januar 2019, 20:24:01
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
Titel: Antw:mit at .pm script ausführen
Beitrag von: Otto123 am 25 Januar 2019, 20:28:44
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
Titel: Antw:mit at .pm script ausführen
Beitrag von: Wernieman am 25 Januar 2019, 20:31:20
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
Titel: Antw:mit at .pm script ausführen
Beitrag von: ChrisW am 25 Januar 2019, 20:35:25
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
Titel: Antw:mit at .pm script ausführen
Beitrag 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 ....
Titel: Antw:mit at .pm script ausführen
Beitrag von: ChrisW am 25 Januar 2019, 20:55:47
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 ?
Titel: Antw:mit at .pm script ausführen
Beitrag von: Otto123 am 25 Januar 2019, 21:02:38
fhem hat kein passwort ...
Wieder anderes Thema. Wir stolpern von einer Baustelle in die nächste  :-X
Titel: Antw:mit at .pm script ausführen
Beitrag von: Wernieman am 25 Januar 2019, 21:02:50
sudo su -s /bin/bash fhem
Titel: Antw:mit at .pm script ausführen
Beitrag von: ChrisW am 25 Januar 2019, 21:06:38
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
Titel: Antw:mit at .pm script ausführen
Beitrag von: Wernieman am 25 Januar 2019, 21:28:37
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 ...
Titel: Antw:mit at .pm script ausführen
Beitrag von: Otto123 am 25 Januar 2019, 21:29:04
Arbeite lieber zuerst daran, dass das Script kein sudo braucht. sudo ist ein dünnes Brett zum bohren.

Gruß Otto
Titel: Antw:mit at .pm script ausführen
Beitrag von: Wernieman am 25 Januar 2019, 21:33:14
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")
Titel: Antw:mit at .pm script ausführen
Beitrag von: CoolTux am 25 Januar 2019, 21:39:14
Mich persönlich würde ja der Inhalt dieser Moduldatei interessieren. Eine Moduldatei ruft man überlichterweise nicht mittels perl auf sondern sie wird von einem Perl Script eingebunden. Ein Perl Skript wiederum hat ein pl am Ende und kann mittels use oder require ein Modul einbinden.
Titel: Antw:mit at .pm script ausführen
Beitrag von: Wernieman am 25 Januar 2019, 21:45:07
Hat er doch gelinkt: https://forum.fhem.de/index.php/topic,71551.msg838940.html#msg838940 (https://forum.fhem.de/index.php/topic,71551.msg838940.html#msg838940)
(Habe den link aus seinem Post)

Bei Unix ist die Dateiendung eigentlich irrelewant. ich könnte ein perl-Script auch broetchen nennen ....

zum richtigen starten gibt es 2 Möglichkeiten:
1. perl broetchen
2. In der ersten Zeile von broetchen ein "#!/us/bin/perl"

Aber prinzipiell hast Du (für User) recht, das eine richtiger anhang besser ist (z.B. met.broetchen *griiins*)
Titel: Antw:mit at .pm script ausführen
Beitrag von: CoolTux am 25 Januar 2019, 21:47:38
Ah alles klar. Danke.
Titel: Antw:mit at .pm script ausführen
Beitrag von: Otto123 am 25 Januar 2019, 22:10:08
Zitat von: Wernieman am 25 Januar 2019, 21:45:07
Bei Unix ist die Dateiendung eigentlich irrelewant. ich könnte ein perl-Script auch broetchen nennen ....
Ich bin für willi  ;D
Zitat von: Wernieman am 25 Januar 2019, 21:45:07
2. In der ersten Zeile von broetchen ein "#!/us/bin/perl"
&& Die Datei muss dafür eXecutable sein.

Und solange wie es nicht läuft, nehme ich um Fehler beim Aufruf auszuschließen  immer /usr/bin/perl /Baecker/broetchen ;D
Titel: Antw:mit at .pm script ausführen
Beitrag von: Wernieman am 25 Januar 2019, 22:14:27
OT:
Neee .. Du wolltest Willi nehmen