IP Adresse und MAC Adresse in Datei speichern

M

macfan

Aktives Mitglied
Thread Starter
Dabei seit
30.07.2002
Beiträge
199
Reaktionspunkte
1
Hallo Leute,
ich hab folgendes Problem. Ich will, dass beim Anmelden ein Textfile erstellt wird. In diesem Textfile soll der Computername, die IP-Adresse und die Mac-Adresse gespeichert werden. Dazwischen Rufzeichen. Es soll so aussehen:

pcname!192.168.1.1!00:20:B9:73:3C:9C



Das Textfile soll ipconfig.cfg heissen und womöglich noch auf ein Serververzeichnis gespeichert werden.

Die IP-Adresse alleine hab ich ja mal geschafft. Auch das erstellen vom Textfile. Aber jetzt weiß ich nicht mehr weiter.
 
Zuletzt bearbeitet:
Eigentlich bekommst du alle diese Infos aus dem Log deines DHCP-Servers.
 
Hostname: hostname
IP und Mac findest du mit "ifconfig en0 | grep "inet[ ]" | cut -d" " -f2" bzw. "ifconfig en0 | grep -oh "..:..:..:..:..:.."" heraus. Ist ein kleines Script aber keine Hexerei.
 
Naja, ich brauch diese Daten genau im Format wie beschrieben und automatisiert (es geht um 150 Rechner). Im Windows ist das kein Problem. Am Mac hab ichs noch nicht geschafftt:
pcname!192.168.1.1!00:20:B9:73:3C:9C

Die Daten werden in einem andreren Programm eingelesen (hat unser Programmierer gemacht). Es entsteht in einem Programm eine Liste mit Usernamen, PCnamen, IP usw. Da mach ich einen Doppelklick drauf und verbinde mich über Fernwartung auf diesen Rechner. Alles sehr cool und flott. Nur wie gesagt, ich muss dazu ein textfile in obigem Format erstellen.
 
Hostname: hostname
IP und Mac findest du mit "ifconfig <Schnittstelle >| grep inet" bzw. "ifconfig <Schnittstelle> | grep ether" heraus. Dann per Regex herausfiltern und in besagte Datei schreiben. Ist ein kleines Script aber keine Hexerei.


Das hab ich auch schon probiert. Bin aber an dem gescheitert, das ich es in einem bestimmten Format benötige. Regex sagt mir nichts. Beim Scripten bin ich verloren?!?!
 
Beim Scripten bin ich verloren?!?!

Dann sei dir geholfen:
Code:
#!/bin/sh
# speichern des hostname in hn
hn=`hostname`
# speichern der ip von Schnittstelle en0 in ip
ip=`ifconfig en0 | grep "inet[ ]" | cut -d" " -f2`
# speichern der mac-address von Schnittstelle en0 in ma
ma=`ifconfig en0 | grep ether | cut -d" " -f2`

# Ausgabe der Variablen mit trennendem Ausrufezeichen in die Textdatei textfile.txt
echo $hn!$ip!$ma > textfile.txt
 
Dann sei dir geholfen:
Code:
#!/bin/sh
# speichern des hostname in hn
hn=`hostname`
# speichern der ip von Schnittstelle en0 in ip
ip=`ifconfig en0 | grep "inet[ ]" | cut -d" " -f2`
# speichern der mac-address von Schnittstelle en0 in ma
ma=`ifconfig en0 | grep ether | cut -d" " -f2`

# Ausgabe der Variablen mit trennendem Ausrufezeichen in die Textdatei textfile.txt
echo $hn!$ip!$ma > textfile.txt



Ok, besten Dank mal. Ich komm der Lösung näher. Aber....

Ich kopier mir jetzt diese 4 Befehle ins Terminal und führe einen nach dem anderen aus. Es wird eine Textdatei erzeugt. Allerdings steht da drinnen (Inhalt): =3c:06:54:79:11031ipma=3c:06:54:79:10:31ma

Was mach ich falsch. Ich verwende OS X Yosemite.
 
Das Ganze ist ein Shell Script, du solltest es auch als solches ausführen.
Also die ganzen Zeilen in eine Textdatei reinschreiben mit einem Editor deiner Wahl und dann als z.B. GetIPMacAdress.sh abspeichern.
Diese Datei dann im Terminal mit sh GetIPMacAdress.sh ausführen oder die Rechte auf execute setzen und nur mit dem Dateinamen ausführen, dann sollte es funktionieren.
 
Und nicht vergessen den Betriebsrat zu informieren wenn hier personenbezogene Nutzerdaten erfasst werden :cake:
 
Das Ganze ist ein Shell Script, du solltest es auch als solches ausführen.
Also die ganzen Zeilen in eine Textdatei reinschreiben mit einem Editor deiner Wahl und dann als z.B. GetIPMacAdress.sh abspeichern.
Diese Datei dann im Terminal mit sh GetIPMacAdress.sh ausführen oder die Rechte auf execute setzen und nur mit dem Dateinamen ausführen, dann sollte es funktionieren.

OK, bin wieder weiter. Allerdings siehts jetzt so aus:
PCNAME.local
!192.168.1.1
!3e:07:55:69:10:01

Es sollte aber so aussehen:
PCNAME!192.168.1.1!3e:07:55:69:10:01

Also .local weg und dann in einer Wurscht!
 
Also bei mir funktionierts normal, also alles in einer Zeile, hast du irgendwelche Zeilenumbrüche eingebaut?
Mit welchem Editor hast du das Script gespeichert/bearbeitet und womit schaust du das Textfile an?
Mal vi versuchen?

Um das .local wegzubekommen aus

Code:
hn=`hostname`

folgendes machen

Code:
hn=`hostname | sed -e "s/\.[^\.]*$//"`
 
Das vorige Beispiel schneidet alles nach einem letzten "." weg.
Wenn du nur .local weghaben willst dann so:
Code:
"s/.local//"
 
Also bei mir funktionierts normal, also alles in einer Zeile, hast du irgendwelche Zeilenumbrüche eingebaut?
Mit welchem Editor hast du das Script gespeichert/bearbeitet und womit schaust du das Textfile an?
Mal vi versuchen?

Ich hab das ganze Script kopiert, habs dann im Automator unter ShellScript reinkopiert und anschließend ausgeführt. Das Textfile seh ich mir mit Textedit an.
 
Ich hab im Automator auf (bin/sh) umgestellt. Es funktioniert jetzt. Besten Dank an euch alle!
 
So kriegst du das active interface
Code:
ifconfig | grep -Po '^[^\t:]+:([^\n]|\n\t)*status: active' | grep -Eom1 '^[^\t:]+'
das kannst du dann jeweils, statt festverdrahtet als en0, als ifconfig $iface einbauen.

Hostnamen ohne Domain (.local): hostname -s
 
So kriegst du das active interface
Code:
ifconfig | grep -Po '^[^\t:]+:([^\n]|\n\t)*status: active' | grep -Eom1 '^[^\t:]+'
das kannst du dann jeweils, statt festverdrahtet als en0, als ifconfig $iface einbauen.

Hostnamen ohne Domain (.local): hostname -s

genau das fehlte mir eig. noch. thanx
 
Jetzt hab ich aber doch noch ein Problem, das sich wahrscheinlich auch ganz einfach lösen lässt.

Diese Textdatei soll je auf einer bestimmten Freigabe abgelegt werden. Und der Pfad besteht aus "/server/ordner/username"
Und Username ist gleich wie der Ordnername. Jeder User bekomt in seinem Ordner diese Datei rein. Unter Windows würde dieser Pfad "/server/ordner/%username% heissen.

Ich habs jetzt so probiert:
set short_name to do shell script "whoami"

Danach mounte ich den Ordner am Server:

mount volume "smb://server/ordner/" & short_name

Soweit klappts.

Und dann:

echo $hn!$ip!$ma > /server/ordner/short_name/ipconfig.cfg

Leider klappt es nicht. Muss ein $ davor od wie sieht das genau aus?
 
=echo $hn!$ip!$ma > /server/ordner/short_name/ipconfig.cfg

Leider klappt es nicht. Muss ein $ davor od wie sieht das genau aus?

Ups, peinlich. Ich hatte einen Schreibfehler drinnen. So klappt es.
echo $hn!$ip!$ma > /server/ordner/$short_name/ipconfig.cfg
 
Ups, peinlich. Ich hatte einen Schreibfehler drinnen. So klappt es.
echo $hn!$ip!$ma > /server/ordner/$short_name/ipconfig.cfg


Es klappt nicht. Es ist nur so, das das Script ohne Fehler durchläuft. Könnt ihr mir noch mal helfen?
 
Zurück
Oben Unten