Mac-Adresse ermitteln funktioniert unter Linux nicht mehr – SELFHTML-Forum Forum als Ergänzung zum SELFHTML-Wiki und zur Dokumentation SELFHTML https://forum.selfhtml.org/self Mac-Adresse ermitteln funktioniert unter Linux nicht mehr Tue, 06 Aug 19 06:10:56 Z https://forum.selfhtml.org/self/2019/aug/06/macadresse-ermitteln-funktioniert-unter-linux-nicht-mehr/1754779#m1754779 https://forum.selfhtml.org/self/2019/aug/06/macadresse-ermitteln-funktioniert-unter-linux-nicht-mehr/1754779#m1754779 <p>Hallo,</p> <p>ich habe einen Webserver, der nur im internen Netz betrieben wird, von Windows auf Linux gewechselt.</p> <p>Auf einer Seite prüfe ich die Erreichbarkeit eines Geräts (über Ping) und ermittle bei Erfolg auch gleich die Mac-Adresse.</p> <p>Als erstes musste ich das Ping-Kommando ändern, da unter Windows ein</p> <pre><code class="block">ping -n 1 $ipadresse </code></pre> <p>geändert werden musste in</p> <pre><code class="block">ping -c 1 -w 3 $ipadresse </code></pre> <p>Das</p> <pre><code class="block">arp -a $ipadresse </code></pre> <p>funktionierte zunächst auch direkt, bis ich festgestellt habe, dass das nur für Geräte funktioniert, die im selben IP-Netz liegen. Unter Windows funktionierte es auch für alle anderen (internen) Netze.</p> <p>Warum aber unter Linux nicht?</p> <p>Ok, dachte ich, ich ändere den Befehl auf</p> <pre><code class="block">arping -c 1 -w 3 $ipadresse </code></pre> <p>aber der Befehl wird (vermutlich wegen fehlender Berechtigung?) nicht ausgeführt. Und das obwohl die Rechte für /usr/sbin/arping auf 755 stehen. Ich habe testweise das arping in ein Shell-Script gepackt und diesem 777 gegeben, das machte aber auch keinen Unterschied.</p> <p>Auch ein (Keulen-)Eintrag in /etc/sudoers mit</p> <pre><code class="block">wwwrun ALL=(ALL) ALL </code></pre> <p>(Laut ps -ef | grep apache läuft der Apache als wwwrun) Ist der Eintrag sofort gültig oder muss ich dafür einen Service neustarten?</p> <p>Wie bekomme ich arping unter PHP ausgeführt?</p> <p>LG Klaus</p> Mac-Adresse ermitteln funktioniert unter Linux nicht mehr Tue, 06 Aug 19 07:35:53 Z https://forum.selfhtml.org/self/2019/aug/06/macadresse-ermitteln-funktioniert-unter-linux-nicht-mehr/1754785#m1754785 https://forum.selfhtml.org/self/2019/aug/06/macadresse-ermitteln-funktioniert-unter-linux-nicht-mehr/1754785#m1754785 <p>Soweit ich mich einnern kann, erfordern ping u.a. Kommandos des IP-Stack Rootrechte (grundsätzlich). MFG</p> Mac-Adresse ermitteln funktioniert unter Linux nicht mehr Tue, 06 Aug 19 07:51:13 Z https://forum.selfhtml.org/self/2019/aug/06/macadresse-ermitteln-funktioniert-unter-linux-nicht-mehr/1754786#m1754786 https://forum.selfhtml.org/self/2019/aug/06/macadresse-ermitteln-funktioniert-unter-linux-nicht-mehr/1754786#m1754786 <p>Erst einmal: Ich habe gehörige Sicherheits-Bauchschmerzen, Dir Tipps zu geben, wie man ein System dazu bringt, nach Aufrufen via Webserver dieses oder jenes mit Root-Rechten auszuführen. Überlege Dir genau, ob das, was Du vor hast, wirklich zu Deinem derzeitigen Wissensstand passt.</p> <blockquote> <pre><code class="block">arping -c 1 -w 3 $ipadresse </code></pre> </blockquote> <blockquote> <p>Wie bekomme ich arping unter PHP ausgeführt?</p> </blockquote> <p>Unter Ubuntu läuft es mit dem Aufruf unter PHP offenbar fast ohne weiteres, wenn Du das Gerät mit angibst:</p> <pre><code class="block language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token function">header</span> <span class="token punctuation">(</span> <span class="token string double-quoted-string">"Content-Type: text/plain; charset=UTF-8"</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token string backtick-quoted-string">`arping -I enp7s0 -w1 -f 192.168.1.251`</span><span class="token punctuation">;</span> </span></code></pre> <p>Ausgaben:</p> <pre><code class="block">ARPING 192.168.1.251 from 192.168.1.2 enp7s0 Unicast reply from 192.168.1.251 [02:01:D3:81:50:A5] 1.083ms Sent 1 probes (1 broadcast(s)) Received 1 response(s) </code></pre> <p><strong>Beachte:</strong> arping unterscheidet sich von Linux-Distribution zu Linux-Distribution zu BSD teils erheblich!</p> <blockquote> <p>Auch ein (Keulen-)Eintrag in /etc/sudoers mit</p> </blockquote> <blockquote> <pre><code class="block"></code></pre> </blockquote> <p>wwwrun ALL=(ALL) ALL</p> <blockquote> <pre><code class="block"></code></pre> </blockquote> <p>... wenn es dennn benötigt wird, dann fehlte da ein NOPASSWD. oder wie willst Du ein Passwort eingeben?</p> <p>Unter dem strengen Debian werden root-rechte benötigt:</p> <pre><code class="block language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token function">header</span> <span class="token punctuation">(</span> <span class="token string double-quoted-string">"Content-Type: text/plain; charset=UTF-8"</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token string backtick-quoted-string">`sudo /usr/sbin/arping -I eth0 -C1 -W1 192.168.1.251`</span><span class="token punctuation">;</span> </span></code></pre> <p>Der Eintrag zugörige Eintrag in /etc/sudoers für Debian:</p> <pre><code class="block">www-data ALL=NOPASSWD: /usr/sbin/arping </code></pre> <p>Falls Du die Adresse übergeben willst, dann denke bitte daran, diese mit <code>escapeshellarg()</code> zu entschärfen. Das ist extrem wichtig, weil Du arping mit root-rechten startest.</p> <pre><code class="block language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token function">header</span> <span class="token punctuation">(</span> <span class="token string double-quoted-string">"Content-Type: text/plain; charset=UTF-8"</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token variable">$ip</span><span class="token operator">=</span><span class="token string single-quoted-string">'192.168.1.251'</span><span class="token punctuation">;</span> <span class="token variable">$device</span><span class="token operator">=</span><span class="token string single-quoted-string">'eth0'</span><span class="token punctuation">;</span> <span class="token variable">$system</span> <span class="token operator">=</span> <span class="token string single-quoted-string">'sudo /usr/sbin/arping -C1 -W1 -I '</span> <span class="token operator">.</span> <span class="token function">escapeshellarg</span><span class="token punctuation">(</span> <span class="token variable">$device</span> <span class="token punctuation">)</span> <span class="token operator">.</span> <span class="token string single-quoted-string">' '</span> <span class="token operator">.</span> <span class="token function">escapeshellarg</span><span class="token punctuation">(</span> <span class="token variable">$ip</span> <span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token variable">$system</span> <span class="token operator">.</span> <span class="token constant">PHP_EOL</span> <span class="token operator">.</span> <span class="token constant">PHP_EOL</span><span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token string backtick-quoted-string">`$system`</span><span class="token punctuation">;</span> </span></code></pre> <pre><code class="block">sudo /usr/sbin/arping -C1 -W1 -I 'eth0' '192.168.1.251' ARPING 192.168.1.251 60 bytes from 02:01:d3:81:50:a5 (192.168.1.251): index=0 time=732.132 usec --- 192.168.1.251 statistics --- 1 packets transmitted, 1 packets received, 0% unanswered (0 extra) rtt min/avg/max/std-dev = 0.732/0.732/0.732/0.000 ms </code></pre> <p>Jetzt musst Du das Zeug noch an Dein Linux anpassen (Apache-User, Pfad zu arping, ggf. dessen Optionen.</p> Mac-Adresse ermitteln funktioniert unter Linux nicht mehr Tue, 06 Aug 19 08:58:24 Z https://forum.selfhtml.org/self/2019/aug/06/macadresse-ermitteln-funktioniert-unter-linux-nicht-mehr/1754807#m1754807 https://forum.selfhtml.org/self/2019/aug/06/macadresse-ermitteln-funktioniert-unter-linux-nicht-mehr/1754807#m1754807 <p>Tach!</p> <blockquote> <p>Soweit ich mich einnern kann, erfordern ping u.a. Kommandos des IP-Stack Rootrechte (grundsätzlich).</p> </blockquote> <p>Grundsätzlich nicht. <code>ping</code> und <code>arp</code> kann man als Normalnutzer ausführen. Selbst <code>ip</code>, <code>ifconfig</code>, <code>route</code> und <code>netstat</code> kann man ausführen, zumindest Teile, die nur Informationen abfragen.</p> <p>dedlfix.</p> Mac-Adresse ermitteln funktioniert unter Linux nicht mehr Tue, 06 Aug 19 08:49:34 Z https://forum.selfhtml.org/self/2019/aug/06/macadresse-ermitteln-funktioniert-unter-linux-nicht-mehr/1754803#m1754803 https://forum.selfhtml.org/self/2019/aug/06/macadresse-ermitteln-funktioniert-unter-linux-nicht-mehr/1754803#m1754803 <p>Lieben Dank für die Erläuterungen.</p> <p>Ich habe die Ursache dadurch finden können. Ich habe zwar korrekt den Eintrag in /etc/sudoers eingefügt, aber ich musste beim Aufruf auch noch ein "sudeo" vorneanstellen.</p> <p>Jetzt funktioniert wieder alles.</p> <p>Nochmals Danke!</p> <p>LG Klaus</p>