Hi Aitor! Anno domini 2019 Tue, 19 Mar 09:56:07 +0100 aitor_czr scripsit: > Hi Nick, > > On 19/3/19 9:21, Dr. Nikolaus Klepp wrote: > > You might call me ignorant, but with bash this can be done a bit simpler > > (this is from my solution to the > > detect-if-kable-present-while-booting-problem):-) > > > > #!/bin/bash > > > > while sleep 1; do > > for i in /sys/class/net/eth*; do > > VAR=$(basename $i) > > VAL=$(sed -n 's/0/UN/p' $i/carrier)PLUGGED > > if [ "${!VAR}" != "$VAL" ]; then > > echo $VAR $VAL > > declare $VAR=$VAL > > fi > > done > > done > > > > > > Nik > Thanks for your script! Interesting to know... With a short look, i > seems to read the value content in the /sys/class/eth0/carrier file, set > to "0" or "1". > I was thinking about this possibility a couple of days ago, but i'm not > pretty sure if its value also depends on the status of the network > hotpluggable device. I'm testing it...
Interestingly the "carrier"-column in /proc/net/dev does not correspond to the cable beeing plugged in or not, it's always "0" on my computer. Nik > On the other hand, here you are the code used in the ethtool-lite.c file > of the netcfg udeb package used by debian-installer, doing something > similar (in the case of the FreeBSD kernel > it uses a raw socket instead): > > int len = strlen(SYSCLASSNET) + strlen(iface) + strlen("/carrier") + 1; > char* filename = malloc(len); > snprintf(filename, len, SYSCLASSNET "%s/carrier", iface); > FILE* fp = fopen(filename, "r"); > free(filename); > > char result[2]; > if (fgets(result, sizeof(result), fp) == NULL) { > fclose(fp); > if (errno == EINVAL) { > di_info("ethtool-lite: %s is down", iface); > return DISCONNECTED; > } > di_error("ethtool-lite: getting carrier failed: %s", > strerror(errno)); > return UNKNOWN; > } > fclose(fp); > > switch (result[0]) { > case '1': > di_info("ethtool-lite: %s: carrier up", iface); > return CONNECTED; > case '0': > di_info("ethtool-lite: %s: carrier down", iface); > return DISCONNECTED; > } > di_info("ethtool-lite: %s: could not determine carrier state; got > \"%s\"", > iface, result); > return UNKNOWN; > > Cheers, > > Aitor. -- Please do not email me anything that you are not comfortable also sharing with the NSA, CIA ... _______________________________________________ Dng mailing list Dng@lists.dyne.org https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng