Noch ne Anfängerfrage:
Kann man (mit Erfolg) ein Listing/Script aus dem Forum direkt in eine Linux-Datei auf dem Raspi kopieren oder muss zB über dos2unix gegangen werden?
Falls dos2unix benötigt wird, wie bitte benutzt man das Programm? Ich komme mit der englischen Beschreibung nicht klar. Hatte gehofft, einfach das Listing in das dos2unix-Fenster kopieren zu können und dann würde ruckzuck das Linux-Listing erscheinen....
Tatsächlich erscheint das Reinkopierte aber doppelt :o
Und bei den angegebenen Befehlsbeispielen sehe ich noch nicht einmal, wie/wo einzugeben..
Die Frage hat wahrscheinlich etwas Slapstickhaftes, aber das ist es mir wert, wenn weiterhilft...
Bitte erleuchtet mich!
LG
Grundsätzlich sollte das gehen, wobei es die Linux Datei an sich nicht gibt und die zweite Frage ist, wie die Daten auf den raspi kommen.
Der grundsätzliche Unterschied zwischen DOS und Linux sind die line endings. Im Kontext fhem kannst du den Editor von fhem benutzen. Ansonsten kannst du dich per SSH auf den raspi verbinden und dort einen Editor wie nano benutzen. Dort kannst du Inhalte auch direkt reinkopieren.
Wenn ich ,,Listings hier im Forum" lese, vermute ich, dass es sich um device definitionen o.ä. handelt? Das ist über die FHEM Weboberfläche einzugeben (Stichwort ,,Raw Editor".
Kurz, weil mobil....
Vielen Dank für die Antworten!
Zur Erläuterung:
Die Verbindung zum Raspi läuft über VNC. Ich möchte ein Script dort in die Datei /opt/fhem/FHEM/presence.sh setzen.
Kann ich die Vorlage aus dem Forum vom Browser direkt in die presence.sh auf dem raspi kopieren?
Danke und LG
Wenn du eh schon einen DESKTOP auf dem fhem SERVER hast (du merkst den "Widerspruch"!? ;) )...
...dann öffne einen Browser und verbinde dich auf die Forumsseite...
...öffne einen Editor (mousepad!?) und kopier das dann da rein...
Einziges Problem wird sein:
Desktop läuft unter User pi (nehme ich an) und fhem unter dem User fhem (vermute ich)...
...ergo: User pi darf NICHT unter /opt/fhem usw. schreiben (das ist ja das Homeverzeichnis von fhem und NICHT von pi)
Besser: du freundest dich (irgendwann) mal mit der Linux-Shell und einigen Linux-Befehlen an!
Weil: du wirst die so erstellte Datei erst mal nur irgendwo im Home von pi (/home/pi usw.) ablegen dürfen.
Dann musst du sie (mittels sudo vermutlich) ins passende Verzeichnis kopieren/verschieben (cp bzw. mv)...
...also irgendwo nach /opt/fhem usw.
Danach musst du die "Besitzverhältnisse" wieder passend rücken: chown
Gruß, Joachim
@Joachim mousepad war doch was anderes - oder :)? Oder gibt es den Editor unter Linux?
Deutsche Beschreibung https://waterlan.home.xs4all.nl/dos2unix/de/man1/dos2unix.htm
Aber wozu? Editor unter linux nehmen, der macht das richtig. Man muss bloß beten das die Zwischenablage aus dem Weg vom Browser über VNC in den Editor noch halbwegs korrekte Zeichen übriglässt!
Ich würde unter Windows einfach ein cmd Fenster öffnen, ssh user@ip-adresse eingeben und den Editor nano im linuxfenster verwenden. copy&paste klappt über diesen Weg gut.
Wie kann man den integrierten FHEM Editor mit einer beliebigen Datei aufrufen? Gibt es da einen Hack? Das würde doch alle diese Diskussionen etwas erleichtern?
Gruß Otto
Hallo Otto,
du hattest noch nie Buster mit Desktop... ;)
Ich hab einen PI4 als "Büro-Kleinrechner" für mal schnell...
...und da gibt es 2 Mousepads...
...einmal das für die Maus auf dem realen Desktop...
...und einmal auf dem virtuellen Desktop für zum Zeichen reinklopfen... ;)
Guckst du: https://wiki.ubuntuusers.de/Mousepad/
EDIT: aber egal welcher Weg, sofern man das nicht als User fhem macht bleibt die "Rechte-/Nutzer-Problematik"... Und da is2late ja extra Desktop und vnc hat, wird er wohl von ssh (noch) nicht viel halten... ;)
Gruß, Joachim
Ganz herzlichen Dank, Otto und Joachim!
Das sind haufenweise wertvolle Anfänger-Infos.
Der Hinweis auf die Eigentümer-Problematik bei Unix lässt mich einige Probleme der letzten Tage verstehen :o
Toll ist die deutsche Übersetzung für dos2unix, wenn ich auch nicht nirgendwo finde, wo man die Kommandos eingibt.
Das Fenster selbst ist ja überraschend leer, nirgendwo ein freundliches Menue...
Sagen wir, ich will Datei W in Datei U umwandeln: gibt man dann entsprechend
dos2unix [Optionen] [DATEI ...] [-n EINGABEDATEI AUSGABEDATEI ...]
einfach ins Fenster ein:
dos2unix n W n U
wobei bei W und U jeweils die Speicherorte angegeben werden müssen? Mit "Reinkopieren" läuft da also nichts, oder?
Ottos Anregung mit SSH hab ich erfolgreich ausprobiert, vielen Dank!
Auf die Gefahr hin, dass es mir mit dos2unix so geht wie mit mousepad - aber das ist für mich ein reines Kommandozeilenprogramm. Ich bin mir nicht sicher wie du es aufrufst, aber normal öffnet man ein Terminalfenster (das ist schwarz und leer, bis auf den Prompt) und dort tippt man Kommandos ein.
Das Programm dos2unix wandelt mit dem Syntax dos2unix bla.txt die Datei bla.txt ins unix Format um. Wurde die Datei in Windows erstellt (nur dann macht die Anwendung eigentlich Sinn) werden die "doppelten" Zeilenumbrüche von Windows durch "einfache" von Unix ersetzt.
Aber man kann die Datei auch "kopieren" dos2unix -n windows.txt linux.txt
Danke, Otto.. krieg es aber immer noch nicht hin.
An welcher Stelle des Kommandos wird denn der Code reinkopiert? Sobald ich das mache, erscheint er doppelt, jede Zeile für sich.
Sagen wir, der Code wäre
sub CheckPresence($$)
{
my ($ip,$mac)= @_;
my $ret = "";
Wie sieht dann bitte das komplette Kommando aus?
LG
Warum machst du es nicht über vnc und "Desktop", wenn du das eh schon hast!?
Also einfach mousepad öffnen und Browser wo der Code steht...
Dort markieren, ctrl+c und in mousepad ctrl+v abspeichern fertig...
EDIT: wenn du denkst zur Sicherheit noch dos2unix anwenden. Denke aber in der Verwendung und mit mousepad unnötig...
Erst mal...
Weil egal ob per ssh oder anderem "schwarzen Fenster" (Terminal) die "User-Problematik" wird bleiben...
Außer du bist im Terminal als User fhem eingeloggt...
Wobei nat. der Umgang mit nano (o.ä.) nicht schadet, weil du für das Presence-Script auch etwas bzgl. fhem und "sudo" tun musst und da wird es mit grafischem Editor (z.B. mousepad, Gedit, ...) schwer...
Einfügen in nano geht mit "rechter Maustaste -> einfügen"...
EDIT: zuvor nat "nano" starten, also im "schwarzen Fenstet" nano pfad/dateiname eingeben. Nicht wundern Fenster bleibt schwarz aber du bist dann schon im Editor ;) Speichern mit ctrl+o und verlassen mit ctrl+x Aufpassen, wenn der Pfad wo hin zeigt, wo der ausführende User nicht schreiben darf, dann wird das nicht klappen. Aber (wie mehrfach erwähnt) auch nicht mit einem grafischen Editor o.ä. Besser also mit Linux und Console beschäftigen und auf lange Sicht den Desktop vom fhem Server runter werfen... Wie du siehst hilft er nichts. Verbraucht nur unnötig Ressourcen und birgt zusätzliche "Gefahren"...
EDIT2: wenn pfad/dateiname noch nicht existiert, wird sie angelegt (beim "Verlassen"/"Speichern" vors. der ausführende User darf dorthin schreiben)...
Gruß, Joachim
Das ist doch aber Code für die 99_myUtils ?
An welcher Stelle und bei welchem Kommando bist Du?
Mit dos2unix schreibst Du keinen Code in eine Datei. Die ist zum Formatwandeln wenn Du es falsch gemacht hast..
@Joachim: Ja, VNC wäre mir auch am liebsten, weil am einfachsten. Ich hab bisher den Code über den Browser meines Windows-PC aus dem Forum kopiert und dann auf den Raspi kopiert. Hat soweit auch funktioniert. Beim Thema Anwesenheitsüberwachung https://forum.fhem.de/index.php/topic,76342.285.html (https://forum.fhem.de/index.php/topic,76342.285.html) scheint das so einfach aber nicht zu klappen, jedenfalls nicht so, dass die Sache funktioniert.
Beispiel: Hab in FHEM die presence.sh erstellt und in nano den Code aus Post 141 kopiert.
Nach Euren Hinweisen hab ich das Ganze alternativ mit ssh durchgeführt.
Abgesehen davon, dass die Anwesenheitserkennung immer noch nicht klappt (Handy immer abwesend) wüsste ich gern, ob beide Vorgehensweisen korrekt sind oder ob die Terminalvariante Fehler produziert.
@Otto: Du erkennst so einen kleinen Codeschnippsel? Alle Achtung!
Ich hab den Ausschnitt nur als Beispiel genommen, weil ich gerade an der Anwesenheitsüberwachung verzweifele. Wollte dos2unix als dritte Variante zu oben ausprobieren, für den Fall, dass bei den anderen Varianten immer noch etwas Falsches beim Kopieren mitkommt.
LG und danke!
Zitat von: Otto123 am 01 Mai 2020, 17:54:32
Das ist doch aber Code für die 99_myUtils ?
An welcher Stelle und bei welchem Kommando bist Du?
Mit dos2unix schreibst Du keinen Code in eine Datei. Die ist zum Formatwandeln wenn Du es falsch gemacht hast..
Ups, richtig...
Aber hier geht es aber auch "durcheinander"... ;)
Gruß, Joachim
Das Presence was du hier einrichten willst läuft bei mir auch...
Aber es sind 2 Dinge (gut eigentlich 3 ;) okok 4 ;) ):
1. du musst etwas in eine myUtils Datei eintragen (das Schnipselchen aber nat. Vollständig)
Wenn du schon eine myUtils hast, dann einfach unter "Edit Files" die Datei auswählen und den Code dort einfügen.
ctrl+c und dann ctrl+v
Wichtig: es muss VOR der 1 am Ende der Datei passieren und darf nat. nicht eine bestehende Sub "zerschießen" ;)
Wenn du noch keine myUtils hast: https://wiki.fhem.de/wiki/99_myUtils_anlegen
2. du musst das presence.sh ablegen, so dass fhem darauf zugreifen darf.
Die musst du entweder mit nano im Terminal oder eben mit mousepad oder Gedit oder einem anderen grafischen Editor anlegen und dann dort den Code reinkopieren...
Theoretisch könnte das auch über edit files gehen...
EDIT: und um die dachte ich geht es (die ganze Zeit). Weil das ist (normalerweise) die einzige Datei in dem Presence-Zusammenhang wo die Unix/Linux Endungen ins Spiel kommen, weil es eben ein "Shell-Script" ist.
3. musst du dafür sorgen, dass fhem die Datei als sudo ausführen darf bzw. wird ja in dem Script sudo benutzt (soweit ich mich erinnere)
und zwar dass fhem das OHNE Passworteingabe darf!
EDIT: habe im anderen Thread gesehen, da hast du ja bereits "gekämpft" und gewonnen!? ;)
4. musst du noch das Presence Device anlegen und diesem mitteilen, dass du die in myUtils angelegte Funktion/Sub zum presence check verwenden willst...
EDIT: und so gerne du das Oberfläschenzeugs und vnc usw. magst: verabschiede dich davon. Auf Dauer wird das sonst nichts... ;)
Gruß, Joachim
Hi Joachim,
ich fürchte, wenn zwei das gleiche machen, ist es noch lange nicht dasselbe ;D
Bin genau nach der Anleitung im post 176 vorgegangen. Zweimal, um sicher zu gehen.
99_myUtils.pm:
package main;
use strict;
use warnings;
sub
myUtils_Initialize($$)
{
my ($hash) = @_;
}
# Enter you functions below _this_ line.
sub CheckPresence($$)
{
my ($ip,$mac)= @_;
my $ret = "";
$mac = lc($mac);
$ret = qx( /opt/fhem/FHEM/presence.sh $ip $mac);
$ret =~ s,[\r\n]*,,g; # remove CR from return-string
if ( $ret != 0 && $ret != 1) {
Log3 "CheckPresence", 2, "CheckPresence: $ret";
return 0;
}
return $ret;
}
1;
presence.sh:
#!/bin/bash
# detect Iphone/Android by IP/HOSTNAME and MAC address.
# use MAC address too, to prevent false positives if IP might change
# returns 1 or 0
# number of retries, less is faster, but less accurate
PREMAXRETRIES=8
MAXRETRIES=8
# exit immediately if no parameters supplied
if [ $# -lt 2 ]
then
echo "UNDEF"
exit 1
fi
# Set variables
IP=`echo $1 | grep -oP '([0-9]){1,3}\.([0-9]){1,3}\.([0-9]){1,3}\.([0-9]){1,3}'`
HOST=`host -4 $1 | grep -oP '([0-9]){1,3}\.([0-9]){1,3}\.([0-9]){1,3}\.([0-9]){1,3}'`
MAC=$2
COUNT=0
PRECOUNT=0
if [ -z "$IP" ]; then
IP=${HOST}
if [ -z "$IP" ]; then
echo "0"
exit 0
fi
fi
while [ ${PRECOUNT} -lt ${PREMAXRETRIES} ];
do
PRECHECK=`sudo arp-scan -q -g ${IP} | grep -o "${MAC}"`
if [ ${#PRECHECK} -eq ${#MAC} ]; then
# exit when phone is detected
echo "1"
exit 0
fi
((PRECOUNT++))
done
while [ ${COUNT} -lt ${MAXRETRIES} ];
do
# Change dev and eth0 if needed
# sudo ip neigh flush dev eth0 ${IP}
sudo hping3 -q -2 -c 10 -p 5353 -i u1 ${IP} >/dev/null 2>&1
#sudo hping3 -q -2 -c 10 -p 5353 -i u1 ${IP}
sleep .1
# Only arp specific device, grep for a mac-address
STATUS=`sudo arp-scan -q -g ${IP} | grep -o "${MAC}"`
if [ ${#STATUS} -eq ${#MAC} ]; then
# exit when phone is detected
echo "1"
exit 0
fi
((COUNT++))
sleep .1
done
# consider away if reached max retries
echo "0"
Rechte:
-rwxr-xr-x 1 fhem dialout 1387 Mai 1 15:42 presence.sh
-r--r----- 1 root root 115 Mai 1 17:47 010_fhem-nopasswd (???? ist das richtig??)
Inhalt der 010_fhem-nopasswd:
fhem ALL = NOPASSWD: /opt/fhem/FHEM/backup.sh, /opt/fhem/FHEM/presence.sh, /usr/bin/arp-scan, /usr/sbin/hping3
Auf
sudo /opt/fhem/FHEM/presence.sh 192.168.1.1 aa:bb:cc:dd:00:11]
gibt es anständigerweise eine "1", auf
[{CheckPresence("x.x.x.x","x:x:x:x:x:x")}]
aber eine schnöde "0".
Am Ende wird das Handy immer als abwesend geführt. im Reading steht auch absent. Scheint ein hoffnungsloser Fall zu sein. Ich hole mir jetzt ein Seil. ;)
LG Ingo
Hallo Ingo,
ich finde es unlogisch, dass das bash Script sudo braucht und sudo in der 99_myUtils fehlt.
Aber vielleicht hat Joachim eine Antwort ;)
Gruß Otto
Eine Antwort warum das so ist habe ich nicht.
Aber es würde wohl gehen/reichen, wenn das Script in der sudoers steht und dann in der Sub mit sudo aufgerufen würde!?
Ich habe es allerdings in der Form laufen...
...nur eine ältere Version des presence.sh
Aber auch da ist "nur" im Script sudo für den hping3 und den arp...
Was geht denn nicht!?
Hast du mal geschaut (auf der Console) was z.B. ein arp "sagt"!?
Ich hatte letztens mal die IP des Handys geändert und noch alte Einträge im arp cache, da war das Handy auch "immer da"...
Gruß, Joachim
Ach so ok.
sudo cat /etc/sudoers.d/010_fhem-nopasswd
Hm, auf einmal heißt es wieder im Log
Zitatsudo: Kein TTY vorhanden und kein »askpass«-Programm angegeben
Wir gehen davon aus, dass der lokale Systemadministrator Ihnen die
Regeln erklärt hat. Normalerweise läuft es auf drei Regeln hinaus:
Hab mal nach Joachims Beitrag in #171
sudo service fhem status
... ausgeführt. Ergebnis:
Mai 02 06:44:45 raspberrypi sudo[3852]: pam_unix(sudo:session): session closed for user root
Mai 02 06:44:45 raspberrypi sudo[3863]: pam_unix(sudo:auth): conversation failed
Mai 02 06:44:45 raspberrypi sudo[3863]: pam_unix(sudo:auth): auth could not identify password for [fhem]
Mai 02 06:44:45 raspberrypi sudo[3863]: fhem : command not allowed ; TTY=unknown ; PWD=/opt/fhem ; USER=root ; COMMAND=/us
Mai 02 06:44:45 raspberrypi sudo[3869]: fhem : TTY=unknown ; PWD=/opt/fhem ; USER=root ; COMMAND=/usr/sbin/hping3 -q -2 -c
Mai 02 06:44:45 raspberrypi sudo[3869]: pam_unix(sudo:session): session opened for user root by (uid=0)
Mai 02 06:44:45 raspberrypi sudo[3869]: pam_unix(sudo:session): session closed for user root
Mai 02 06:44:45 raspberrypi sudo[3880]: pam_unix(sudo:auth): conversation failed
Mai 02 06:44:45 raspberrypi sudo[3880]: pam_unix(sudo:auth): auth could not identify password for [fhem]
Mai 02 06:44:45 raspberrypi sudo[3880]: fhem : command not allowed ; TTY=unknown ; PWD=/opt/fhem ; USER=root ; COMMAND=/us
Lese ich das richtig, dass ein Passwort für fhem entweder nicht vergeben ist (was ja wohl gut wäre) oder vermisst wird?
@Joachim: Wie fragt man denn bitte arp ab? Hab dazu im Forum nur diesen Beitrag gefunden: https://forum.fhem.de/index.php/topic,105008.msg989356.html#msg989356 (https://forum.fhem.de/index.php/topic,105008.msg989356.html#msg989356)
Beitrag #171 von WO!?
Du würfeslt hier alles durcheinander...
Versuche doch von: oh was gefunden, klingt "lustig" das kopiere ich einfach mal wo hin, wird schon auch laufen...
Zu: ok, das klingt interessant. Ich schaue mir das mal an und versuche zu verstehen WAS das WIE macht etc. Und dann übernehme ich das...
Und wenn ich ehrlich bin:
ich habe den Überblick verloren, was du jetzt schon alles gemacht hast...
und: was nun nicht geht...
Die letzte gepostete Meldung sieht so aus als würde fhem das Script bzw. Teile davon (verm. die mit sudo) nicht ausführen dürfen bzw. wird nach einem Passwort gefragt, was du ja nicht automatisch eingeben kannst bei einem autom. ausgeführten Programm/Script, welches im Hintergrund (no tty) läuft... (und auch so laufen soll)
Also erläutere doch noch mal in Ruhe was du nun schon alles hast.
Und poste doch bitte exakte Kopien von dem was du hast und verändere besser nichts.
(Weil was sollen wir mit deiner INTERNEN IP anfangen und gut von mir aus die MAC von deinem Telefon schreib da doch lauter aa:aa:aa usw. )
EDIT: Oder gilt das von hier: https://forum.fhem.de/index.php/topic,110736.msg1049257.html#msg1049257 noch!?
Und dann bitte auch die Ausgabe von dem was Otto "wissen" wollte:
sudo cat /etc/sudoers.d/010_fhem-nopasswd
EDIT: UND SEI MIT SYSTEMDATEIEN VORSICHTIG!! DA KANN MAN EIN SYSTEM SCHNELL MAL ZERSCHIESSEN! ALLES AUSSERHALB VON: /home/pi bzw. /opt/fhem ist SYSTEM ;) UND FÜR SUDO bzw. sudoers aufpassen! Und am besten sudo visudo -f /etc/sudoers.d/010_fhem-nopasswd
benutzen! Und für Tests evtl. mal eine Kopie der Datei vom User pi nehmen und anpassen. Wenn das dann geht: einschränken...
EDIT: aber zunächst mal erläutern wie geschrieben: was du gemacht hast und was geht/nicht geht... Also: aktueller Stand... ;)
EDIT: DAS FOLGENDE HIER NUR WEIL ICH DACHTE ES LÄUFT UND STIMMT ABER NICHT! ALSO ERST MAL "VERGESSEN"... ;)
Und arp!?
Ganz einfach, weil so das Script prüft, ob eine MAC eben gelistet ist.
Ist sie gelistet -> es ist "da"
Ist sie nicht (mehr) gelistet -> es ist "weg"
Stimmt allerdings nur, wenn eben nichts "falsches" mehr im Cache ist.
Das habe ich aber nur "ins Rennen geworfen", weil ich dachte (aus dem anderen Thread, dort wo die Anwesenheitserkennung "übernommen" ist), dass es eigentlich tut, du nur mit dem Ergebnis nicht zufroeden bist: Handy ist "da", obwohl es "weg" ist...
Daher das mit dem Prüfen von arp (weil genau das das Script auch tut)...
Also Google: arp raspberry pi / oder arp Linux Console etc.
Oder einfach den Teil aus dem Script nehmen ;)
arp -an | awk '{print $4}'
Bzw. ist das halt noch aus meiner (alten Version) des "Prüfscripts"...
...ich habe gesehen, die neue Variante ist deutlich "aufwändiger" ;)
Macht aber im Prinzip das gleiche...
Du siehst: du wirst über kurz oder lang nicht um Linux und Console rumkommen...
Gruß, Joachim
ZitatLese ich das richtig, dass ein Passwort für fhem entweder nicht vergeben ist (was ja wohl gut wäre) oder vermisst wird?
fhem hat kein passwort und das ist richtig so! fhem ist ein service Account.
Du hast einfach sudo für fhem quasi nicht (richtig) eingerichtet.
Gruß Otto
@danke, Otto! Hast Du einen Tipp, wie ich sudo für fhem richtig einrichte?
@Joachim: Ich versuche es. Es liegt wirklich nicht an fehlendem guten Willen.
Also:
1) arp-scan und hping installiert.
2) für das weitere gilt unverändert #15. Wenn dieser Verweis nicht iO ist, kopiere ich es gern noch einmal zusammen. Wollte es jetzt nur nicht so lang machen.
3. sudo cat /etc/sudoers.d/010_fhem-passwd ergibt
fhem ALL = NOPASSWD: /opt/fhem/FHEM/backup.sh, /opt/fhem/FHEM/presence.sh, /usr/bin/arp-scan, /usr/sbin/hping3
4. arp zeigt die Adressen der zu beobachtenden Handys, soweit sie eingeschaltet sind.
5. Das logfile ist voll von
Zitatsudo: Kein TTY vorhanden und kein »askpass«-Programm angegeben
Wir gehen davon aus, dass der lokale Systemadministrator Ihnen die
Regeln erklärt hat. Normalerweise läuft es auf drei Regeln hinaus
6. visudo habe ich genutzt.
7. Alle sechs Handys (davon fünf Apple) sind IMMER auf "absent". Hier ein Internal zum Beispiel:
EF
function {CheckPresence("192.168.100.xx", " xx:xx:xx:xx:xx:xx ")} 300 300
FUUID
5eac3600-f33f-a080-6c85-4ddbded410d78f0d
INTERVAL_NORMAL
300
INTERVAL_PRESENT
300
MODE
function
NAME
HandySony_Ingo
NOTIFYDEV
global
NR
179
NTFY_ORDER
50-HandySony_Ingo
STATE
absent
TYPE
PRESENCE
Das Reading:
model
function
2020-05-02 10:13:08
presence
absent
2020-05-02 11:34:44
state
absent
2020-05-02 11:34:44
In Verzweiflung
Ingo
Hallo Ingo,
erstmal: Lob! Du hast nicht pauschal alles für fhem zum sudo machen wollen. ;) Da bist Du einer von ganz wenigen.
meine Notiz (https://heinz-otto.blogspot.com/2017/08/raspberry-ausschalten-mit-fhem.html)dazu:
ZitatInhalt der sudoers Datei
Die durch Komma getrennten Werte in der Datei haben folgende Bedeutung und benötigen immer den vollen Pfad!
/usr/sbin -> für alles im Verzeichnis
/usr/sbin/service * -> für alle Parameter
/usr/sbin/service apache2 * -> für alle weiteren Parameter
/usr/sbin/service apache2 reload -> genau nur hierfür
Der Aufruf in FHEM muss dann genau dem Schema entsprechen:
"sudo /usr/sbin/service apache2 reload"
Sowohl arp-scan als auch hping3 haben aber Parameter!
Das Script wird schlussendlich nicht mit sudo aufgerufen, das kannst Du aus der sudoers rausnehmen.
BTW:
Backup mit sudo? muss das wirklich sein? ::)
Gruß Otto
Die Pfade zu den Programmen die du als sudo in der Script-Datei stehen hast stimmen!?
also
which arp-scan
which hping3
liefert die Pfade!?
Wenn nicht: korrigieren...
Du kannst auch einfach mal (zum Test) den Eintrag der 010_pi-nopasswd in die 010_fhem-nopasswd eintragen und NUR den USER anpassen: pi -> fhem
Wenn dann das Script immer noch den "no tty passwd" Fehler spuckt, dann ist es was anderes...
Wenn das Script läuft und das Ergebnis immer noch nicht stimmt, dann mal da weiter schauen:
Was "sagt" ein
sudo arp-scan -q -g IP-EINES-HANDYS
auf der Console!?
Wenn dabei deine MAC kommt, dann ist was mit der arp-table/cache nicht i.O.
Bzw. das Script hat recht ;)
In meinem "alten" Script wird nicht arp-scan sondern "nur" arp genommen (mein Befehl von ein paar Posts weiter oben), ist aber egal...
...denke ich.
Gruß, Joachim
Stimmt!
Otto's Analyse ist nat konkreter!!
Gruß, Joachim
@Otto: Ein Lob.... Ich schneide es mir aus und hänge es übers Bett ;)
Aber das war leider nicht mein Verdienst, nur eine gute Vorlage...
Backup mit sudo habe ich rausgenommen. 01_fhem-nopasswd sieht jetzt (wieder) so aus:
fhem ALL = NOPASSWD: /opt/fhem/FHEM/backup.sh, /opt/fhem/FHEM/presence.sh, /usr/bin/arp-scan, /usr/sbin/hping3
ZitatSowohl arp-scan als auch hping3 haben aber Parameter!
Bedeutet das, mir fehlen Parameter?
@Joachim: Pfade stimmen:
pi@raspberrypi:~ $ which arp-scan
/usr/sbin/arp-scan
pi@raspberrypi:~ $ which hping3
/usr/sbin/hping3
sudo arp-scan -p -g xxx.xxx.xxx.xx liefert
ZitatInterface: wlan0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.9.5 with 1 hosts (https://github.com/royhills/arp-scan)
0 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.5: 1 hosts scanned in 3.061 seconds (0.33 hosts/sec). 0 responded
ZitatDu kannst auch einfach mal (zum Test) den Eintrag der 010_pi-nopasswd in die 010_fhem-nopasswd eintragen und NUR den USER anpassen: pi -> fhem
Davor hab ich ein bisschen Angst. Wirklich machen?
Tausend Dank für Euren unermüdlichen Support!
Ich habe mir den Thread durchgelesen und versucht zu verstehen .. und bin eigentlich gescheitert.
Kannst Du bitte sagen, was Du genau wie vorhast?
z.B.
fhem ALL = NOPASSWD: /opt/fhem/FHEM/backup.sh, /opt/fhem/FHEM/presence.sh, /usr/bin/arp-scan, /usr/sbin/hping3
Wieso hast Du das Script presence.sh UND /usr/bin/arp-scan, /usr/sbin/hping3 drin?
In der Sudo-Datei sagst Du, welche Programme der User (in der ersten Zeile) wie als Pseudoroot ausführen darf.
Zitat von: is2late am 02 Mai 2020, 12:20:08
@Joachim: Pfade stimmen:
pi@raspberrypi:~ $ which arp-scan
/usr/sbin/arp-scan
pi@raspberrypi:~ $ which hping3
/usr/sbin/hping3
Dann is gut...
Zitat von: is2late am 02 Mai 2020, 12:20:08
sudo arp-scan -p -g xxx.xxx.xxx.xx liefertDavor hab ich ein bisschen Angst. Wirklich machen?
Nur wie ich geschrieben habe: wenn das Script mal läuft aber das Ergebnis NICHT stimmt...
Keine Angst, das Script macht das doch auch ;)
Dir fehlen verm. die Parameter...
Den Hinweis von Otto hast du gelesen!?
Dir fehlt verm. das '*' hinter den Aufrufen für: alle Parameter...
Zum Beispiel..
Gruß, Joachim
Zitat
Zitat
Du kannst auch einfach mal (zum Test) den Eintrag der 010_pi-nopasswd in die 010_fhem-nopasswd eintragen und NUR den USER anpassen: pi -> fhem
Davor hab ich ein bisschen Angst. Wirklich machen?
Wäre ja nur zum Test.
Um zu sehen, ob es prinzipiell läuft.
User pi hat diese Rechte/Möglichkeiten bei dir ja vermutlich noch!?
Warum dann Angst, wenn der User fhem das mal KURZZEITIG ZUM TEST auch "darf"/"kann"... ;)
Später dann umsetzen mit den Hinweisen von Otto...
...wenn wir wissen, dass es nun prinzipiell läuft...
Gruß, Joachim
ZitatSowohl arp-scan als auch hping3 haben aber Parameter!
Bedeutet das, mir fehlen Parameter?
Ich versuchte es Dir zu erklären:
ZitatInhalt der sudoers Datei
Die durch Komma getrennten Werte in der Datei haben folgende Bedeutung und benötigen immer den vollen Pfad!
/usr/sbin -> für alles im Verzeichnis
/usr/sbin/service * -> für alle Parameter
/usr/sbin/service apache2 * -> für alle weiteren Parameter
/usr/sbin/service apache2 reload -> genau nur hierfür
Der Aufruf in FHEM muss dann genau dem Schema entsprechen:
"sudo /usr/sbin/service apache2 reload"
Das ist doch eigentlich verständlich oder?
Wenn Du nur /usr/sbin/hping3 aufrufen würdest, dann würde Dein Eintrag stimmen.
Du rufst aber (im Script) "/usr/sbin/hping3 mit Tante Frieda" auf.
Also musst Du entweder
/usr/sbin/hping3 mit Tante Frieda in die Datei schreiben, oder anstatt
mit Tante Frieda ein *
@Werner Das Script presence.sh ist aus meiner Sicht fehl am Platz, denn das Script wird innerhalb fhem nicht als sudo aufgerufen. Aber im Script wird sowohl arp-scan als auch hping3 mit sudo aufgerufen.
Könnte aber doch auch geändert werden...
Also sudo aus dem Script raus...
...und dann "nur" Aufruf des Scripts mit sudo...
Dann wird zumindest der Eintrag in der sudoers (wieder) einfach(er) ;)
Nur als "OT-Idee" ;)
Gruß, Joachim
Und die Anzahl der Möglichkeiten steigt mit der Permuation der Varianten :)
@Ingo Zu meinem Lob: immerhin hast Du eine bessere Vorlage genommen als gefühlt 95% der "normal User" - die nehmen einfach ALL=(ALL) NOPASSWD: ALL
Okay, hab jetzt mal die Variante Otto probiert.
Die 010_fhem-passwd lautet jetzt:
fhem ALL = NOPASSWD: /opt/fhem/FHEM/presence.sh, /usr/bin/arp-scan*, /usr/sbin/hping3*
Im Log bleibt es bei
Zitatsudo: Kein TTY vorhanden und kein »askpass«-Programm angegeben
. Die Handys sind weiterhin absent.
Wenn ich als nächstes das sudo aus dem Script presence.sc entfernen soll, dann vermutlich an diesen drei Stellen:
PRECHECK=`sudo arp-scan -q -g ${IP} | grep -o "${MAC}"`
sudo hping3 -q -2 -c 10 -p 5353 -i u1 ${IP} >/dev/null 2>&1
STATUS=`sudo arp-scan -q -g ${IP} | grep -o "${MAC}"`
und vermutlich auch in den beiden zugehörigen Kommentierungen, richtig?
LG
Du hast aber schon ein LEERZEICHEN zwischen Befehl und dem Stern!?
Ich sehe keines... ;)
Denke aber da sollte/muss eins hin... ;)
Ich würde nichts aus dem Script entfernen (erst mal)...
Und wenn du es tust: ja sind diese Stellen...
Und nein: bei den Kommentaren ist es egal ;)
Und: dann musst du aber in der myUtils sub das Script mit sudo aufrufen...
Und: ich würde nicht gleichzeitig an zu vielen Schrauben drehen...
...immer einswas nach dem anderen...
Und schneller ginge wohl mein Vorschlag: einfach mal ZUM TEST!!! dem User fhem "alles ohne Passwort" erlauben, so wie dem User pi (vermutlich) auch...
Wenn das geht: weiter an der sudoers "schrauben"...
...wenn es damit auch nicht geht: dann liegt es an was anderem...
Gruß, Joachim
Das Leerzeichen war tatsächlich nicht drin. Jetzt aber:
fhem ALL = NOPASSWD: /opt/fhem/FHEM/presence.sh, /usr/bin/arp-scan *, /usr/sbin/hping3 *
Probiere es heute Abend einmal damit, dem User fhem alles ohne PW zu erlauben. Wenn ich es hinkriege. :-\
LG
Zitat von: is2late am 02 Mai 2020, 14:09:31
Das Leerzeichen war tatsächlich nicht drin. Jetzt aber:
fhem ALL = NOPASSWD: /opt/fhem/FHEM/presence.sh, /usr/bin/arp-scan *, /usr/sbin/hping3 *
Probiere es heute Abend einmal damit, dem User fhem alles ohne PW zu erlauben. Wenn ich es hinkriege. :-\
LG
Mach doch erst mal so, wenn du es schon hast... ;)
Wenn dann immer noch das mit Passwort etc. kommt kannst du immer noch den Inhalt vom User pi sudoers "übernehmen" und anpassen...
Und erneut: das nur zum TEST!
Wenn das dann geht, dann musst du sehen wie wir das mit der sudoers dann richtig machen...
...wenn es dann damit auch nicht geht, müssen wir "woanders" suchen...
Gruß, Joachim
Oder wenigstens mal in der FHEM Kommandozeile testen ....
Na, jetzt (nach Einfügen der Sternchen) tut sich doch mal was...eine neue/erweiterte Fehlermeldung:
Zitatsudo: Kein TTY vorhanden und kein »askpass«-Programm angegeben
Thread 3 terminated abnormally: icmp ping requires root privilege at ./FHEM/00_SONOS.pm line 6423 thread 3.
Wieso jetzt Sonos!?
Du wolltest doch PRESENCE oder!?
Wie sieht dein define bzgl. PRESENCE der Handys aus!?
EDIT: ich hab mir von weiter vorne mal deine definition angesehen
Zitatfunction {CheckPresence("192.168.100.xx", " xx:xx:xx:xx:xx:xx ")} 300 300
und Leerzeichen um die MAC ist wahrsch. falsch... Außer dir ist beim "Verfremden" ein Fehler passiert... ABER: (verm.) nicht das Problem der Fehlermeldung...
EDIT: probier doch mal aus was passiert, wenn du das hier (nat. mit richtiger IP und MAC OHNE Leerzeichen) in Fhemweb eingibst:
{CheckPresence("192.168.100.xx", " xx:xx:xx:xx:xx:xx ")}
Gruß, Joachim
Hi Joachim,
ja, es geht nur um PRESENCE. Sonos ist aber auch installiert und spielt ja ordentlich im Log mit. Vielleicht stört das? Der Player ist häufig disappeared.
Aber zurück zu PRESENCE:
Hab alle Varianten durchprobiert: Mit und ohne Space um die Mac herum, das Ergebnis ist immer das gleiche: "0".
Das define sieht so aus:
define HandySony_Ingo presence function {CheckPresence("192.168.xxx.xx", " xx:xx:xx:xx ")} 300 300
Das Leerzeichen scheint nichts auszumachen. Hab in der DEF die Leerzeichen versuchsweise entfernt, also
function {CheckPresence("192.168.xxx.xx", "xx:xx:xx:xx")} 300 300
Auch bei einem erneuten Versuch bleibt es für
{CheckPresence("192.168.....
bei "0". Alle Handys sind angeblich absent.
Soll ich das Sonos-Zeug mal rauswerfen?
Das mit Sonos (ist bestimmt) was anderes...
Aber die Meldung sagt, dass da wohl noch ein Eintrag für ping in der sudoers fehlt... ;)
Ich denke das Sonos_Modul "pingt die Geräte an, um zu wissen, ob die "da" sind...
So nun zurück zur Anwesenheit... :)
Tja, dann müssen wir sehen, wo das Problem liegt...
Nun also doch auf die Linux-Console und mal (den "Spruch" aus dem Script "testen"):
sudo arp-scan -q -g 192.1.1.1
evtl. auch so:
sudo arp-scan -q -g "192.1.1.1"
Natürlich mit der richtigen IP...
Oder in fhem-Web:
{qx(sudo arp-scan -q -g '192.1.1.1')}
Wenn da dann in der Liste (vermute es kommt eine zurück) die MAC des Handys dabei ist, dann kann das Script nix dafür...
...dann ist das Handy noch im arp-chache...
EDIT: setzt nat. voraus, dass KEIN Fehler (bzgl. des Scripts oder der sub) mehr gegeben ist... (Sonos mal außen vor)...
Gruß, Joachim
P.S.: in dem Script (alte Version) das ich habe wird "nur" arp verwendet aber auch da hatte ich letztes Mal ein "Problem" mit dem arp chache. Mein Handy war da immer da... Obwohl KEIN WLAN... ;)
Ich bin nicht sicher wegen dem Anfang in der sudoers.
Ich schreibe da immer
fhem ALL=(ALL) NOPASSWD:
So ganz 100% hab ich den Syntax nicht verinnerlicht.
Guten Morgen!
sudo arp-scan -q -g 192.1.1.
- IP mit oder ohne Anführungszeichen - brachte Erstaunliches:
Das Android-Handy wurde nicht gemeldet, obwohl online
Zitatsudo arp-scan -q -g 192.xxx
Interface: wlan0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.9.5 with 1 hosts (https://github.com/royhills/arp-scan)
0 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.5: 1 hosts scanned in 2.917 seconds (0.34 hosts/sec). 0 responded
Dagegen gab es einen Treffer beim Apple-Handy:
Zitatsudo arp-scan -q -g 192.xxx
Interface: wlan0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.9.5 with 1 hosts (https://github.com/royhills/arp-scan)
192.xxx xx:xx
2 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.5: 1 hosts scanned in 1.566 seconds (0.64 hosts/sec). 1 responded
. (Bei Wiederholung des Befehls war es dann nur noch 1 packet.)
In Fhem gelten alle Handy weiterhin als absent.
Daraufhin habe ich beim Android-Handy die mobilen Daten ausgeschaltet. Jetzt wurde es plötzlich erkannt:
sudo arp-scan -q -g 192.xxx
Interface: wlan0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.9.5 with 1 hosts (https://github.com/royhills/arp-scan)
192.xxx xx:xx
1 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.5: 1 hosts scanned in 2.103 seconds (0.48 hosts/sec). 1 responded
Danach habe ich die mobilen Daten wieder eingeschaltet. Ergebnis: Android-Handy nicht mehr erkannt. Mobile Daten wieder AUS - und plötzlich jetzt KEINE Erkennung mehr. Handy neu gebootet, mobile Daten aus, gleiches Ergebnis. Cache-Problem?
Ottos Idee
fhem ALL=(ALL) NOPASSWD:
habe ich auch ausprobiert; keine Veränderung, dh weder bei der Erkennung auf sudo arp-scan noch in Fhem.
Soll ich die sudoers wieder zurückdrehen? Die Sterne stehen auch noch drin.
LG Ingo
Wie du siehst ist es ja kein/nicht nur ein sudo Problem...
Solange der arp-scan dein(e) Handy(s) nicht "findet" wird auch das Script nicht richtig tun...
Und: das funktioniert nat. nur, wenn sich die Handys sauber in dein Netz einbuchen...
Gruß, Joachim
Hi Joachim,
klar, das verstehe ich. Jedoch sollten in Fhem jedenfalls die eingebuchten Handys mit korrektem Status erscheinen. Ist aber nicht der Fall. Muss also irgendwo noch ein Fehler drin sein.
Weisst Du, wie man den arp-Cache löscht?
LG Ingo
Hi,
ich habe hier eine umfangreiche Beschreibung gefunden: https://www.sudo.ws/man/1.8.13/sudoers.man.html
Nach der Beschreibung ist der Syntax in Ordnung.
fhem ALL = NOPASSWD: Befehl
Bedeutet: fhem darf als root auf allen Hosts ohne Passwortabfrage den Befehl ausführen.
In meiner Variante
fhem ALL = (ALL)
Könnte der User mit der -u Option (sudo -u username) noch einen spezifischen User auswählen in dessen Kontext der Befehl ausgeführt wird.
Auch wenn das jetzt wenig zur Problemlösung beiträgt. ;)
Gruß Otto
@is2late
Du denkst viel zu weit.
Mach erstmal das Script O.K. dann kannst Du über die Einbindung in FHEM nachdenken. Also immer Step bei Step, sonst stolpert man ...
Bezüglich arp-cache leeren .. mal google probiert?
https://www.google.com/search?client=ubuntu&channel=fs&q=linux+arp+cache+clear&ie=utf-8&oe=utf-8 (https://www.google.com/search?client=ubuntu&channel=fs&q=linux+arp+cache+clear&ie=utf-8&oe=utf-8)
Edit:
OT
Ich glaube, ich muß mir mal überlegen, ob ich nicht mal arpwatch ausprobiere ....
Zitat von: Wernieman am 03 Mai 2020, 11:14:32
@is2late
Du denkst viel zu weit.
Mach erstmal das Script O.K. dann kannst Du über die Einbindung in FHEM nachdenken. Also immer Step bei Step, sonst stolpert man ...
Bezüglich arp-cache leeren .. mal google probiert?
https://www.google.com/search?client=ubuntu&channel=fs&q=linux+arp+cache+clear&ie=utf-8&oe=utf-8 (https://www.google.com/search?client=ubuntu&channel=fs&q=linux+arp+cache+clear&ie=utf-8&oe=utf-8)
Edit:
OT
Ich glaube, ich muß mir mal überlegen, ob ich nicht mal arpwatch ausprobiere ....
Sehe ich auch so.
Denn wenn das Script oder die darin verwendeten Methoden NICHT zuverlässing erkennen, ob die Handys nun "da" sind oder nicht...
...kann ja selbst eine sauber funktionierende fhem-Integration das nicht erkennen... ;)
Allerdings solltest du auch mal prüfen, ob dein WLAN zuverlässig genug ist.
Wenn es einen Unterschied macht, ob du mobile Daten an hast oder nicht (auch wenn das nur 1x "geklappt" hat), dann glaubt das Handy, dass es über Datenverbindung eher eine zufriedenstellende Internetverbindung hinbekommt als über dein WLAN und ist somit nicht wirklich "eingebucht"...
Evtl. gibt es auch Einstellungen im Handy.
Bei meinem Android kann man auch "Entwickleroptionen" freischalten, wo man weitere Dinge diesbezüglich einstellen kann...
Bei Apfel kenn ich mich nicht aus...
In dem von mir verwendeten Script wird nicht arp-scan verwendet sondern "nativ" arp...
...ohne jetzt sagen zu können was der Unterschied wäre (wenn es denn überhaupt einen gibt)... ;)
So tief stecke ich in Netzwerk auch (noch) nicht drin... ;)
EDIT: wobei in dem Fall (Handys NICHT da, obwohl doch da ;) ) arp cache leeren nicht hilft. Das wäre eher für den Fall (wie bei mir), wenn die Handys weiter "eingebucht" angezeigt werden aber definitiv "raus" sind... Weil sie eben "fälschlicherweise" noch in der arp Tabelle gemeldet sind wo sie aber schon raus sein sollten. Wie geschrieben bei mir habe ich in kurzer Zeit immer mal an der IP meines Telefons "gedreht" (bin/war gerade dabei mein Netzwerk neu zu "ordnen" ;) ) und irgendwie hing die MAC immer noch in der arp (zur falschen IP) und war somit immer "anwesend" obwohl ich WLAN aus hatte bzw. sogar mal die Wohnung verlassen hatte, um einzukaufen...
Gruß, Joachim
Zitat von: Wernieman am 03 Mai 2020, 11:14:32
Edit:
OT
Ich glaube, ich muß mir mal überlegen, ob ich nicht mal arpwatch ausprobiere ....
@Wernieman:
kennst du die Unterschiede zwischen:
arp (wie bei mir in Verwendung und tut [noch])
arp-scan (wie neuerdings in "dieser" Anwesenheitserkennung)
arpwatch
Gut, ja klar: könnte googeln ;)
Aber vielleicht kennst du auch Vor-/Nachteile etc. :)
Gruß, Joachim
Kurz: und knakig:
arp: Zeigt die arp-Tabelle (kann noch mehr)
arp-scan: Scant das Netzwerk nach einer Adresse und aktuallisiert eventuell die arp-Tabelle
arp-ping: Macht ein "ping" mit einer MAC
arpwatch: Ein Deamon, der auf Änderungen im arp-Bereich reagiert und dann eine EMail auslöst. Diese könnte man weiterverarbeiten .... z.B. push nach FHEM? Bis jetzt aber nur Teorie ...
P.S: habe arp-ping angefügt, obwohl nicht angefordert ....
Hinweis:
arp-Daten (MAC) gelten nur im aktuellen ungerouteten Netz. Wenn ich z.B: "ping www.google.de" und mir dann mit "arp" die arp-Tabelle anzeige lasse, steht höchstens die MAC der routers und DNS-Server (wenn getrennt) drin. Alles hinter dem router ist schließlich geroutet.
Zitat von: Wernieman am 03 Mai 2020, 12:11:33
Kurz: und knakig:
arp: Zeigt die arp-Tabelle (kann noch mehr)
arp-scan: Scant das Netzwerk nach einer Adresse und aktuallisiert eventuell die arp-Tabelle
arp-ping: Macht ein "ping" mit einer MAC
arpwatch: Ein Deamon, der auf Änderungen im arp-Bereich reagiert und dann eine EMail auslöst. Diese könnte man weiterverarbeiten .... z.B. push nach FHEM? Bis jetzt aber nur Teorie ...
P.S: habe arp-ping angefügt, obwohl nicht angefordert ....
Danke! :)
Auch danke für das zusätzliche (nicht gefragte ;) ) arp-ping...
Zitat von: Wernieman am 03 Mai 2020, 12:11:33
Hinweis:
arp-Daten (MAC) gelten nur im aktuellen ungerouteten Netz. Wenn ich z.B: "ping www.google.de" und mir dann mit "arp" die arp-Tabelle anzeige lasse, steht höchstens die MAC der routers und DNS-Server (wenn getrennt) drin. Alles hinter dem router ist schließlich geroutet.
Ja, habe ich gemerkt...
Habe ja getrennte VLANs und ab und an (zum Test) mein Handy in einem der anderen VLANs...
...dann bin ich nat. "abwesend"...
Dachte: ok, dann halt einfach diese MAC im "anderen" Netz und gut... ;)
Hat leider nicht geklappt...
PRESENCE mit ping nat. (also nat. nur bei mir weil ich das so will ;) ) schon aber PRESENCE mit ping ist mir zu unzuverlässig...
...da bin/war ich in der Vergangenheit schon ab und an mal "weg" obwohl da ;)
Daher ja das mit arp und hping3: funktioniert zuverlässig...
Bzw. habe ich es zweistufig wegen Akkuverbrauch ("dauernder" hping3 und arp haben den Akku schon "belastet")...
D.h. ich habe ein PRESENCE mit norm. ping und wenn das abwesend zeigt wird beim "hping3-PRESENCE" geschaut und wenn das sagt "anwesend", wird dort ein statusRequest ausgelöst...
...ansonsten macht das hping3-PRESENCE sehr selten selbst "pings"...
"Führend" bzgl. Anwesenheit ist dann das "hping3-PRESENCE"... :)
Aber das jetzt OT (SORRY!!!!) ;)
EDIT: @Ingo/is2late evtl. den Titel des Threads ändern in irgendwas mit Presence und arp etc. Weil das mit dem Script und in welcher Art und Weise das einzufügen etc. ist aktuell ja eher nebensache bzw. scheint das ja (bis auf evtl. sudo) geklappt zu haben. Aktuell ist ja wohl eher das Problem, dass die Methode des Scripts nicht zuverlässig erkennt, dass/ob deine Handys "da" sind oder eben nicht... Evtl. auch einen neuen Thread!?
Gruß, Joachim
Wenn schon OT dann richtig:
hping3 ist sehr viel mehr als ping ... https://tools.kali.org/information-gathering/hping3 (https://tools.kali.org/information-gathering/hping3)
Wie verwendest Du es?
Zitat von: Wernieman am 03 Mai 2020, 12:32:04
Wenn schon OT dann richtig:
hping3 ist sehr viel mehr als ping ... https://tools.kali.org/information-gathering/hping3 (https://tools.kali.org/information-gathering/hping3)
Wie verwendest Du es?
Okok, dann halt weiter OT ;)
Ja, ich weiß bzw. bin ich auch drüber gestolpert, dass es "mehr" ist/kann... ;)
Verwenden wäre jetzt übertrieben gesagt...
Wie geschrieben habe ich (immer noch) eine der allerersten Versionen des Scripts aus besagtem Thread in Verwendung:
declare -a DEVICES
sudo hping3 -2 -c 10 -p 5353 -i u1 $1 -q >/dev/null 2>&1
DEVICES=`arp -an | awk '{print $4}'`
CHECK="$2"
if [[ ${DEVICES[*]} =~ $CHECK ]]
then
echo "1"
else
echo "0"
fi
Wie geschrieben: habe nie die "Sinnhaftigkeit" (also ob hping3/arp "optimal" genutzt werden) etc. geprüft, nur (bevor ich es eingesetzt habe) auf einem Testsystem laufen lassen und mal (grob) nachgesehen, was das Script so tut (weil ja mit sudo)...
Gruß, Joachim
O.K. ein UDP-Ping auf Port 5353 (u.A: avahi) ... deshalb funzt es ...
$1 ist die IP?
Und dann wird geschaut, ob die MAC ($2?) im Cache ist.
Edit:
Du hast ein Apfel-Handy? Meines dagegen sagt:
hping3 -2 -c 10 -p 5353 -i u1 192.168.2.50 -q
HPING 192.168.2.50 (enp3s0 192.168.2.50): udp mode set, 28 headers + 0 data bytes
--- 192.168.2.50 hping statistic ---
10 packets transmitted, 0 packets received, 100% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms
Edit2:
O.K. es liegt an der Geschwindigkeit:
hping3 -2 -c 10 -p 5353 -i u100 192.168.2.50 -q
HPING 192.168.2.50 (enp3s0 192.168.2.50): udp mode set, 28 headers + 0 data bytes
status=0 port=2320 seq=2
status=0 port=2321 seq=3
--- 192.168.2.50 hping statistic ---
10 packets transmitted, 2 packets received, 80% packet loss
round-trip min/avg/max = 95.4/95.4/95.4 ms
"-i u1" definiert die Schnelligkeit der Paketsendung. Du verwendest also hping3 nur, um den arp-cache aktuell zu halten. Ich hätte mir sonst überlegt, den Output von hping3 sofort zu verarbeiten ....
Ja, so verstehe ich das:
$1: IP
$2: MAC
Nein, nix Apfel...
...Android...
Wie geschrieben: habe (bis ich den "Ständig-anwesend-Fehler" hatte) nie näher nachgeprüft...
Nur mal bzgl. dem arp geschaut (siehe "Fehler") und gesehen, dass die MAC weiter gelistet ist/war, obwohl Handy "weg"...
Nach dem Löschen des arp cache tut es jetzt wieder zuverlässig seinen Dienst...
(und das schon seit Jahren und mind. 2 Handy-Generationen lang EDIT: alles Androiden... ;) )
EDIT:
ZitatDu verwendest also hping3 nur, um den arp-cache aktuell zu halten.
wie geschrieben "verwenden" ist übertrieben. Script "geklaut" und tut... :)
Gruß, Joachim
Na, das ist ja eine muntere Diskussion unter Fachleuten geworden - jede Menge Infos, die mir sicher mal nützlich sein können. Vielen Dank dafür und für Eure unermüdliche Unterstützung!
LG Ingo
Dann Enden wir mal mit OT ..
@is2late ... woran hängst Du gerade?
@Wernieman: Bin soweit zufrieden, danke, und genieße den gegenwärtigen Zustand ohne größere Probleme. Der wird sicher nicht lange andauern ;-)
Schönen Sonntag noch!
D,h, es funktioniert aktuell?
Weißt Du Warum??
Naja, mein ursprüngliches Anliegen bezog sich ja auf den Betreff; diesbezüglich wurde mir geholfen.
Dabei kamen die Fehlermeldungen "no tty" ins Spiel. Hierzu habe ich eine Quelle mit verschiedenen Lösungsansätzen gefunden https://k2rx.com/fixed-sudo-no-tty-present]]https://k2rx.com/fixed-sudo-no-tty-present (//http://) Klappt jetzt auch.
Und schließlich ging es um die Anwesenheitsüberwachung, wobei mir schließlich auch geholfen wurde.
Nebenbei hab ich über die Diskussion und OT-Sachen noch so einiges mit auf den Weg bekommen.
Also vielen Dank an die klugen Köpfe!
Ach sooo ... die Leerzeichen .... bin ich Blind ....
Nicht Deine Schuld...ging ja quer durchs Beet.