datei parsen

Post Reply
Message
Author
sellmi

datei parsen

#1 Post by sellmi »

hi ich will ein programm schreiben welches (ich weiss dases auch mit grep und cut geht unter linux ) aus einer nmap-log file , zeile für zeile aus liest und wenn am ende einer zeile Up steht dann die ip die am anfang der zeile steht mir aus giebt ,beispiel

host: 123.123.123.123 (telekom.de) status:Up


aber er gibt immer nur die erste ip aus warum ?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


main(){
FILE *stream;
char *loc,dateiname[22];
char si[61];
char zeichen1[6];
char zeichen2[64];
int ch=6;

strcpy(dateiname,"/home/melsa/pinging");
strcpy(zeichen1,"Up");

if((stream = fopen(dateiname,"r"))
==NULL) {
printf("
Error bein öffnen
");
exit(1);
}


for(;!feof(stream) {

fgets(si,62,stream);

strcpy(zeichen2,si);

loc=strstr(si,zeichen1);

if(loc != NULL){
for (ch;ch<=19;ch++){
printf("%c",zeichen2[ch]);
}

}

Oli

Re: datei parsen

#2 Post by Oli »

Probier mal:

<font face="Courier New">
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


main(){
FILE *stream;
char *loc,dateiname[22];
char si[61];
char zeichen1[6];
char zeichen2[64];
int ch=6;

strcpy(dateiname,"/home/melsa/pinging");
strcpy(zeichen1,"Up");

if((stream = fopen(dateiname,"r"))
==NULL) {
printf(" Error bein öffnen ");
exit(1);
}


for(;!feof(stream);){

fgets(si,62,stream);

strcpy(zeichen2,si);

loc=strstr(si,zeichen1);

if(loc != NULL){
for (ch=6;ch<=19;ch++){
printf("%c",zeichen2[ch]);
}
printf("\<!--no-->n");
}
}

}
</font><!--fixed-->
Ich habe einige Klammern anderst gesetzt und ch mit 6 initialisiert.

prospero

Re: datei parsen

#3 Post by prospero »

versuch mal dies, gibt dir egall wie lang die ip adresse ist diese aus, gibt alles aus bis zum naechsten leerzeichen:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define MAX 512

int main(int argc, char **argv) {

FILE *fd;
char *filename = "test.log";
char strline[MAX];
char searchstr[] = "Up";
char *p;

fd = fopen(filename, "r");

if(fd == NULL) {
fprintf(stderr, "cannot open %s", filename);
exit(1);
}

while(fgets(strline, MAX, fd) != NULL){
if(strstr(strline, searchstr) != NULL){
p = strpbrk(strline, "1234567890");
while(p[0] != ' '){
printf("%c", *p);
p++;
}
printf("\<!--no-->n");
}
}

fclose(fd);

exit(0);

}

prospero

Re: datei parsen

#4 Post by prospero »

wobei zur sicherheit, wenn mal nach der ip kein leerzeichen kommt du noch einen abbruchkontrolle implementieren solltest.

int i=0;
while(p[0] != ' ' && i < 15){
printf("%c", *p);
p++;
i++;
}


so in der art

prospero

Post Reply