Есть несколько способов... Проще всего использоватьnmcli d
нмкл д
[root@localhost ~]# nmcli d
DEVICE TYPE STATE CONNECTION
enp0s8 ethernet connected Wired connection 1
enp0s3 ethernet connected enp0s3
lo loopback unmanaged --
[root@localhost ~]#
В качестве альтернативы;
состояние сервисной сети
[root@localhost ~]# service network status
Configured devices:
lo enp0s3
Currently active devices:
lo enp0s3 enp0s8
[root@localhost ~]#
Я думаю, что одним из способов было бы использовать библиотеку gpg и делать то же самое, что и утилита CLI.
В противном случае вы можете отфильтровать вывод gpg:
#!/bin/bash
if [ -z "$1" ]; then
echo "No filename specified" 1>&2
exit 1
fi
if [ ! -r "$1" ]; then
echo "File not found" 1>&2
exit 2
fi
gpg --list-packets "$1" \
| grep ", name=" | cut -f2 -d '"'
(Предполагается, что встроенное имя не содержит двойных кавычек ).
Чтобы получить данные между name="
и ",
в строке после строки с надписью :literal data packet:
, используйтеsed
:
gpg --list-packets file.gpg |
sed -e '/^:literal data packet:$/!d' \
-e 'N' \
-e 's/[^=]*name="//' \
-e 's/",$//' \
-e 'q'
Выражение sed
сначала удаляет все строки, считанные из gpg
, пока не найдет строку :literal data packet:
. Затем он немедленно добавляет следующую строку с N
и удаляет все, что сейчас находится в буфере, вплоть до первой подстроки name="
включительно. Затем он удаляет ",
из конца строки и завершает работу (, выводя то, что осталось в буфере ).
Это позволяет нам обрабатывать имена файлов, такие как file",
или name="hello"
, встроенные в данные gpg
.
Обратите внимание, что перед внедрением в файл gpg
специальные символы будут закодированы как шестнадцатеричная управляющая последовательность. Например, каждый символ новой строки будет закодирован как \x0a
.
Краткая версия:
gpg --list-packets file.gpg | awk -F\" '/created/ {print $2}'