ifconfig -s <interface>
imprimirá uma saída bem formatada (e fácil de analisar):
% ifconfig -s enp4s0f2
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
enp4s0f2 1500 0 0 0 0 0 0 0 0 0 BMU
Você poderia passá-lo para o AWK e manipular o status de saída do pipe de acordo com o campo Flg
; um sinalizador R
atual significa que a interface está sendo executada:
ifconfig -s eth0 | awk 'NR == 2 {if($NF !~ /R/ ) {exit 1}}'
% ifconfig -s
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
enp4s0f2 1500 0 0 0 0 0 0 0 0 0 BMU
lo 65536 0 18990 0 0 0 18990 0 0 0 LRU
wlp3s0f0 1500 0 600316 0 0 0 425756 0 0 0 BMRU
% ifconfig -s enp4s0f2 | awk 'NR == 2{if($NF !~ /R/) {exit 1}}'
1 % ifconfig -s wlp3s0f0 | awk 'NR==2 {if($NF !~ /R/) {exit 1}}'
%
Assim, o teste poderia ser algo assim:
if ifconfig -s eth0 | awk 'NR == 2 {if($NF !~ /R/ ) {exit 1}}'; then
# do the stuff that needs to be done when eth0 is not running
done