BMAS Geschrieben 16. Januar 2002 Geschrieben 16. Januar 2002 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. Zitieren
AngelusCadere Geschrieben 16. Januar 2002 Geschrieben 16. Januar 2002 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... Zitieren
AngelusCadere Geschrieben 16. Januar 2002 Geschrieben 16. Januar 2002 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* Zitieren
BMAS Geschrieben 16. Januar 2002 Autor Geschrieben 16. Januar 2002 Macht nichts, geht mir manchmal auch so. 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? Zitieren
BMAS Geschrieben 16. Januar 2002 Autor Geschrieben 16. Januar 2002 Okay habe das mal mit: ping -n 1 -w 100 ausprobiert, ist doch recht flott aber wie geht das mit den Returncodes ??? Zitieren
AngelusCadere Geschrieben 16. Januar 2002 Geschrieben 16. Januar 2002 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... Zitieren
AngelusCadere Geschrieben 16. Januar 2002 Geschrieben 16. Januar 2002 ähhhm.... du hast in deinem profil die email funktion deaktiviert.... wird so etwas schwierig mit dem mailen... Zitieren
BMAS Geschrieben 16. Januar 2002 Autor Geschrieben 16. Januar 2002 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) Zitieren
BMAS Geschrieben 16. Januar 2002 Autor Geschrieben 16. Januar 2002 Oh, na gut, dann schicke ich dir ne Mail Zitieren
Mirko Geschrieben 16. Januar 2002 Geschrieben 16. Januar 2002 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); Zitieren
BMAS Geschrieben 16. Januar 2002 Autor Geschrieben 16. Januar 2002 Habe ich schon probiert´ geht nicht dann kommt, "Cannot convert java.lang.String to java.lang.File" Zitieren
Mirko Geschrieben 16. Januar 2002 Geschrieben 16. Januar 2002 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"); Zitieren
BMAS Geschrieben 16. Januar 2002 Autor Geschrieben 16. Januar 2002 Die Syntax im Quellcode ist richtig, aber du hast Recht, habe es in meinem Post vergessen, war halt schnell geschrieben und abgeschickt Zitieren
Mirko Geschrieben 16. Januar 2002 Geschrieben 16. Januar 2002 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 ;-)) Zitieren
BMAS Geschrieben 16. Januar 2002 Autor Geschrieben 16. Januar 2002 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. Zitieren
Mirko Geschrieben 16. Januar 2002 Geschrieben 16. Januar 2002 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"); Zitieren
BMAS Geschrieben 17. Januar 2002 Autor Geschrieben 17. Januar 2002 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? Zitieren
Mirko Geschrieben 17. Januar 2002 Geschrieben 17. Januar 2002 besser ist das... Schau dir mal den LineNumberReader an... Zitieren
BMAS Geschrieben 18. Januar 2002 Autor Geschrieben 18. Januar 2002 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! Zitieren
Mirko Geschrieben 18. Januar 2002 Geschrieben 18. Januar 2002 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 Zitieren
BMAS Geschrieben 18. Januar 2002 Autor Geschrieben 18. Januar 2002 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. Zitieren
Mirko Geschrieben 18. Januar 2002 Geschrieben 18. Januar 2002 hmm, seltsam. Dann poste doch mal den Code... Zitieren
Peeter Geschrieben 18. Januar 2002 Geschrieben 18. Januar 2002 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) Zitieren
BMAS Geschrieben 18. Januar 2002 Autor Geschrieben 18. Januar 2002 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! Zitieren
Peeter Geschrieben 18. Januar 2002 Geschrieben 18. Januar 2002 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 Zitieren
Empfohlene Beiträge
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.