Используйте 'сокращение' для извлечения списка из/etc/passwd

SSH, кажется, не имеют никакого понятия диапазонов IP для known_hosts. Я думаю, что предположение - то, что каждый хост имел бы уникальный ключ из соображений безопасности.

Два пути I видят, чтобы предварительно заполнить Ваш known_hosts:

  1. ssh-keyscan - Запишите краткий сценарий для итерации через все те адреса и любой канал его к ssh-keyscan или файл для ssh-keyscan читать. ssh-keyscan может просканировать несколько хостов на вызов, или через определение на одной строке или через определение списка хостов.

  2. Заполнить known_hosts самостоятельно со сценарием или редактором. Формат довольно прост при использовании нехешированной версии. Это:

    имя хоста, IP-адрес ssh-keytype ключ

hostname имя хоста, с которым Вы связываетесь и были бы тем же для всех адресов GitHub. IP address был бы тем, чего сценарий выполнит итерации через. key ключ, который Вы обеспечили выше.

Ни один не изящен, но я думаю, что люди SSH предположили, что никто не сделает то, что делает GitHub.

3
16.07.2014, 00:35
4 ответа
[
cut -f 1,7 -d: /etc/passwd | tr ":" " " | sort > ~/usershells.txt
]
0
27.01.2020, 21:23

Для сортировки не нужно использовать cut, достаточно использовать sort с piping:

sort -t " " -k 7 /etc/password |  sort -t " " -k 1

Порядок сортировки гарантирует, что оболочка для входа будет использоваться в качестве первичного ключа, а имя пользователя - в качестве вторичного ключа.

-t " будет использовать пробел в качестве разделителя.

Чтобы показать только две колонки используйте cut (после сортировки):

sort -t " " -k 7 /etc/password |  sort -t " " -k 1 | cut -f 1,7 -d:

и наконец вы можете сохранить вывод в файле usershells.txt:

sort -t " " -k 7 /etc/password |  sort -t " " -k 1 | cut -f 1,7 -d: > ~/usershells.txt

и если ваш стандартный разделитель : вы можете использовать tr, так как в Dani_l упоминается:

tr ":" " " /etc/password |  sort -t " " -k 7| sort -t " " -k 1 | cut -f 1,7 -d: > ~/usershells.txt
1
27.01.2020, 21:23

Параметр f позволяет выбрать поле, а d задает, что такое разделительный символ

 cut -f 1,7 -d: /etc/passwd
0
27.01.2020, 21:23
cut -f 1,7 -d: /etc/passwd | tr ":" " " | sort -k 1 |sort -k 2

Я не думаю, что первая сортировка строго необходима, поскольку это сортировка по умолчанию.

Если вы хотите переключить столбцы, просто используйте awk:

cut -f 1,7 -d: /etc/passwd | tr ":" " " | sort -k 2 | awk '{print $2,$1}'

, который предлагает использовать awk для получения:

awk -F ":" '{print $7,$1}' /etc/passwd | sort

Который не использует cut, но не уверен, насколько сложным для вас является требование использования cut.

Если вы вообще не хотите использовать awk, вы все равно можете изменить порядок столбцов.
Вот один пример использования цикла while и чтения:

cut -f 1,7 -d: /etc/passwd | tr ":" " " | sort -k 2 | while read -r c1 c2;do echo "$c2 $c1";done

Другой вариант с использованием «вырезать и вставить»:

paste <(cut -f7 -d: /etc/passwd) <(cut -f1 -d: /etc/passwd) | sort

или, если единственное пространство является жестким требованием:

paste -d " " <(cut -f7 -d: /etc/passwd) <(cut -f1 -d: /etc/passwd) | sort

просто перенаправить любой из перечисленных параметров в файл, используя > ~ / usershells.txt

, конечно, вы все еще можете использовать cut'n'paste, чтобы сохранить исходный порядок и по-прежнему сортировать по оболочкам:

paste -d " " <(cut -f1 -d: /etc/passwd) <(cut -f7 -d: /etc/passwd) | sort -k 2 > ~/usershells.txt
2
27.01.2020, 21:23

Теги

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