SSH, кажется, не имеют никакого понятия диапазонов IP для known_hosts. Я думаю, что предположение - то, что каждый хост имел бы уникальный ключ из соображений безопасности.
Два пути I видят, чтобы предварительно заполнить Ваш known_hosts:
ssh-keyscan
- Запишите краткий сценарий для итерации через все те адреса и любой канал его к ssh-keyscan
или файл для ssh-keyscan
читать. ssh-keyscan
может просканировать несколько хостов на вызов, или через определение на одной строке или через определение списка хостов.
Заполнить known_hosts
самостоятельно со сценарием или редактором. Формат довольно прост при использовании нехешированной версии. Это:
имя хоста, IP-адрес ssh-keytype ключ
hostname
имя хоста, с которым Вы связываетесь и были бы тем же для всех адресов GitHub. IP address
был бы тем, чего сценарий выполнит итерации через. key
ключ, который Вы обеспечили выше.
Ни один не изящен, но я думаю, что люди SSH предположили, что никто не сделает то, что делает GitHub.
Для сортировки не нужно использовать 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
Параметр f позволяет выбрать поле, а d задает, что такое разделительный символ
cut -f 1,7 -d: /etc/passwd
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