Как я могу выполнить ping с определенной сетевой карты на Ubuntu v16.04 LTS?

Как я подхожу к нему, сначала нужно получить uuids из файла, а затем использовать find

awk '{print $1}' listfile.txt  | while read fileName;do find /etc -name "$fileName*" -printf "%p FOUND\n" 2> /dev/null;done

Для чтения,

awk '{print $1}' listfile.txt  | \
    while read fileName;do \
    find /etc -name "$fileName*" -printf "%p FOUND\n" 2> /dev/null;
    done

Пример со списком файлов в /etc/, ища имена файлов passwd, group, fstab и THISDOESNTEXIST.

$ awk '{print $1}' listfile.txt  | while read fileName;do find /etc -name "$fileName*" -printf "%p FOUND\n" 2> /dev/null; done
/etc/pam.d/passwd FOUND
/etc/cron.daily/passwd FOUND
/etc/passwd FOUND
/etc/group FOUND
/etc/iproute2/group FOUND
/etc/fstab FOUND

Поскольку вы упомянули, что каталог плоский, вы можете использовать параметр -printf "%f\n" для печати filename сам

Что это не значит, это перечислить недостающие файлы. Недостаток find заключается в том, что он не говорит вам, не находит ли он файл, только когда он что-то соответствует. Однако, что можно сделать, это проверить выход - если выход пуст, то у нас отсутствует файл

awk '{print $1}' listfile.txt  | while read fileName;do RESULT="$(find /etc -name "$fileName*" -printf "%p\n" 2> /dev/null )"; [ -z "$RESULT"  ] && echo "$fileName not found" || echo "$fileName found"  ;done

. Более читаемый:

awk '{print $1}' listfile.txt  | \
   while read fileName;do \
   RESULT="$(find /etc -name "$fileName*" -printf "%p\n" 2> /dev/null )"; \
   [ -z "$RESULT"  ] && echo "$fileName not found" || \
   echo "$fileName found"  
   done

И вот как это работает как маленький скрипт:

skolodya@ubuntu:$ ./listfiles.sh                                               
passwd found
group found
fstab found
THISDONTEXIST not found

skolodya@ubuntu:$ cat listfiles.sh                                             
#!/bin/bash
awk '{print $1}' listfile.txt  | \
   while read fileName;do \
   RESULT="$(find /etc -name "$fileName*" -printf "%p\n" 2> /dev/null )"; \
   [ -z "$RESULT"  ] && echo "$fileName not found" || \
   echo "$fileName found"  
   done

В качестве альтернативы можно использовать stat, так как это плоский каталог, но приведенный ниже код не будет работать рекурсивно для подкаталогов, если вы когда-нибудь захотите добавить те:

$ awk '{print $1}' listfile.txt  | while read fileName;do  stat /etc/"$fileName"* 1> /dev/null ;done        
stat: cannot stat ‘/etc/THISDONTEXIST*’: No such file or directory

Если мы возьмем идею stat и запустим ее, мы можем использовать код выхода stat как указание на наличие файла или нет. Эффективно, мы хотим сделать это:

$ awk '{print $1}' listfile.txt  | while read fileName;do  if stat /etc/"$fileName"* &> /dev/null;then echo "$fileName found"; else echo "$fileName NOT found"; fi ;done

Пример прогона:

skolodya@ubuntu:$ awk '{print $1}' listfile.txt  | \                                                         
> while read FILE; do                                                                                        
> if stat /etc/"$FILE" &> /dev/null  ;then                                                                   
> echo "$FILE found"                                                                                         
> else echo "$FILE NOT found"                                                                                
> fi                                                                                                         
> done
passwd found
group found
fstab found
THISDONTEXIST NOT found
0
задан 6 October 2017 в 01:53

2 ответа

Попробуйте ip route get 8.8.8.8 from 192.168.22.51 проверить вашу таблицу маршрутизации. Он может сказать enp2s0.

0
ответ дан 18 July 2018 в 05:45

Попробуйте ip route get 8.8.8.8 from 192.168.22.51 проверить вашу таблицу маршрутизации. Он может сказать enp2s0.

0
ответ дан 24 July 2018 в 18:25

Другие вопросы по тегам:

Похожие вопросы: