Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Weiss jemand, wie ich in einem Netzwerk scannen kann, welcher Rechner eingeschaltet oder erreichbar ist und welcher nicht? Ich habe es so versucht (leider habe ich den Code nicht mehr):

String rechner="xxy";

while rechner !=null

{

1. rechner= lese aus der Liste x(in dieser Liste stehen alle Rechner die im Netzwerk sind.) den Rechner aus.

2. File test = "\\\\"+rechner+"\\c$\\autoexec.bat" <- Im Code hat die Syntax gestimmt, hat aber nicht funtioniert.

3. if rechner.exist etc. ab da war alles korrekt.

}

Nur die 2 hat nicht gestimmt (Cannot convert String to File oder so ähnlich), mir scheint, dass ich einem File die Rechner nicht dynamisch zuweisen kann. Weiss jemand Rat? Oder kann ich das anders machen?

PS: Die Syntax im Quellcode sieht natürlich nicht wie oben aus. :D

Geschrieben

tach....

iss nur mal n ganz grober ansatz...

wir ham ma was geschrieben womit man so ala netsend nachrichten an netzwerkrechner verschicken konnte...

dabei ham wir die netzwerkbezeichnungen verwendet die die rechner ham... und nicht die IP

nun zu meinem ansatz....

wenn du ne liste (datei) erstellest aus der du die rechnernamen ausliest die im netzwerk sind.... und an jeden rechner ne art ping schickst.... und den returncode auswertest... also ob timeout oder nicht.... musstest du doch im endeffekt wissen welcher rechner an iss, oder??

stellt sich natürlich die frage ob man unter java pingen kann...

Geschrieben

vergiss meinen eintrag.....

ich sollte aufmerksamer einträge lesen.... *bllll*

:eek:

aber ich könnte dir mal die sourcen von unserem Netsend schicken...

vielleicht hilft das ja mehr als meine wiederholung deiner lösung....

*ichglaubichbrauchnocheinenkaffee*

Geschrieben

Macht nichts, geht mir manchmal auch so. :D

Aber ich bin Dir für jede Hilfe dankbar! Schick die Sourcen bitte an meine Mail Adresse in meinem Profil schicken, danke!

PS: Neija, ob das mit Ping gut wäre weiss ich nicht, ist nicht sehr schnell und bei ca. 700 Rechnern wird sich das Ganze auch ziemlich ziehen. Javas exist ist da um einiges schneller!

PPS: Wie mache ich das mit dem Returncode?

Geschrieben

ich weiss nicht so genau ob es da sowas wie returncodes gibt....

aber irgent ne rückmeldung must du ja vom system bekommen....

wenn du mit java pingen kannst muss es auch ne methode geben die dir die rückmeldungen liefert....

so war das mit den returncodes gemeint..... bin im moment etwas COBOL geschädigt.... da arbeite ich nur mit sowas...

Geschrieben
Original geschrieben von BMAS

Hmm, ich pinge mit dem W2k Shellbefehl ping und nicht mit java,

weisst du wie ich einen String in einer File Variable zuweisen kann, (siehe 1. Post)

String tempString = "und" +" \\hier" + "kannst du dir ja was zusammenstringen";

File test = new File(tempString);

Geschrieben

so wie du das oben beschrieben hast, hast du aber das "new File()" außenrum vergessen...

Klar, du kannst nicht einfach sagen

File test = "c:\\autoexec.bat";

sondern

File test = new File("c:\\autoexec.bat");

Geschrieben

aber wenn du es so geschrieben hast, wie ich in meinem letzten Beitrag, dann kannst du eigentlich nicht diese Fehlermeldung bekommen...

schick doch mal nen Code-Auszug ;-))

Geschrieben

import java.io.*;

import java.lang.Runtime;

class antivirus

{

public static void main(String args[])

{

try

{

File ausst = new File("W:\\pfad1\\pfad2\\","rechner.txt");

File fehler = new File("W:\\pfad1\\pfad2\\fehler.txt");

File rechn = new File("W:\\");

FileWriter fw1 = new FileWriter(fehler);

PrintWriter pw1 = new PrintWriter(fw1);

BufferedReader ein= new BufferedReader(new FileReader(ausst));

String rechner=ein.readLine();

while (rechner!=null)

{

rechn = ("\\\\"+rechner+"\\c$\\autoexec.bat");

System.out.println(rechner);

rechner=ein.readLine();

}

}

catch (IOException p)

{

System.out.println("Fehler: "+p);

}

}

}

Bitteschön, eine Copy-Paste und kompilieren... das Programm ist natürlich noch nicht fertig und macht noch nichts.

Geschrieben
Original geschrieben von BMAS

File rechn = new File("W:\\");

...

...

rechn = ("\\\\"+rechner+"\\c$\\autoexec.bat");

Hier ist dein Fehler. Du initialisiert rechn am Anfang mit new File("W:\\"). Das überschreibst du aber dann später wieder. Und das, was du da versuchst zuzuweisen ist nichts anderes als ein String. Nicht aber eine Instanz der Klasse File. Und daher bekommst du diese Fehlermeldung.

Statt dessen müßte das ungefähr so aussehen (nicht getestet!!!)

rechn = new File("\\\\"+rechner+"\\c$\\autoexec.bat");

Geschrieben

Okay, das war mir alles zu blöd, ich pinge jetzt *g*

Danke für eure Hilfe.

Ach und nochwas, kann man java.io.BufferedReader.readLine eigentlich sagen das er nur eine bestimmte Zeile lesen soll, z.B. Zeile 3?

readLine liest ja normalerweise immer wieder die nächste Zeile, ich will aber nur die 3. haben. Das Problem ist das in dem File in dem das Programm lesen soll, immer wieder einen anderen Inhalt hat und ich auch immer wieder die 3. Zeile brauche. geht das irgendwie?

Geschrieben

Kannst du mir das vielleicht erklären? Ich verstehe das nicht so ganz, ich habe das ausprobiert, aber der liest trotzdem immer alle Zeilen durch.

Kannst du mir vielleicht ein Beispiel posten, das funktioniert? Bitte!

Geschrieben

Ich habe das auch noch nicht ausprobiert.

Aber du darfst eben nicht in einer Scheife lesen, sondern setzt einfach erst die Zeile auf die 3. mit setLineNumber(int i) und liest dann genau eine Zeile mit readLine().

Das sollte funktionieren...

Gruß

Mirko

Geschrieben

Habe ich gemacht, aber das Programm liest immer zuerst die erste Zeile. Ich habe es geprüft, die Zeile wird schon auf 3 gesetzt, aber lesen tut es aus Zeile 1, vielleicht habe ich einen logischen Fehler irgendwo, werde mal schauen.

Geschrieben

Warum lässt du das ganze mit der Textdatei nicht sein?? Ist viel zu viel Aufwand.

Probiers doch mal mit nem Socket!!

Du schreibst ne "for"-Schleife und lässt damit nen ganzen IP-Bereich durchlaufen. Bei dem Socket brauchst du nur ne IP anzugeben und nen Port auf dem du dich verbinden willst! Hintergrund ist, wenn man sich mit einem bestimmten Port (135, 137, 7, 9, ....) verbinden kann, ist der Rechner an.

Wenn nicht, dann ist er nicht an.

So bekommst du wirklich jeden Rechner im Netzwerk.

Sowas hab ich schon mal gemacht, blos das ich von einem Rechner alle offenen Ports gesucht hab. (PortScanner)

Geschrieben

Neija, ich muss sagen, dass ich noch nicht sooo weit in Java, dass ich mir zutraue etwas mit ports zu machen, von daher wäre mir die Textdatei Lösung lieber... ich werde mal schauen, vielleicht kriege ich es ja doch hin.

@Mirko

Ja, bitte mach´ das!

Geschrieben

Geht eigentlich ganz einfach und ist wesentlich effektiver! Schau mal, wenn ein paar Rechner in das Netzwerk hinzugefügt werden, willst du dann jedes mal die Textdatei ändern??

try{

Socket sock=new socket(client,port);

sock.setTcpNoDelay(true);

sock.setSoLinger(false,5);

sock.setSoTimeout(10);

System.out.println("Client sowieso"+client+" ist online");

sock.close();

}

catch(IOException f){ //nichts

}

Das war´s. Jetzt packst du das ganze noch in ne schöne Schleife und machst noch den Rest außen rum und fertig ist dein NetzwerkScanner!!

cu Peeter

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...