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
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
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
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
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
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
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
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 ....
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 ?
fhem hat kein passwort ...
Wieder anderes Thema. Wir stolpern von einer Baustelle in die nächste :-X
sudo su -s /bin/bash fhem
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
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 ...
Arbeite lieber zuerst daran, dass das Script kein sudo braucht. sudo ist ein dünnes Brett zum bohren.
Gruß Otto
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")
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.
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*)
Ah alles klar. Danke.
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
OT:
Neee .. Du wolltest Willi nehmen