Как организовать управление группой ПК

Материал из IT в школе
Перейти к навигацииПерейти к поиску


Найти Linux ПК в сети

Поиск осуществляется по наличию открытых портов 22 (ssh) и 631 (cups)

#!/bin/bash

nmap -n --stats-every 1s -p 22,631 172.xx.xx.0/23 | grep -B 5 "631/tcp open" | grep -B 4 "22/tcp  open" | grep 172 | sed 's/Nmap scan report for //' | grep -v Nmap > hosts.txt

hosts.txt - список имен или адресов компьютеров

Установить ключи для root доступа по ssh

Доступ по ssh c правами учетной записи администратора запрещен по умолчанию. Тем не менее доступ возможен по ключу. Это значит, что должен быть сгенерирован цифровой ключ (в нашем случае типа ed25519), состоящий из двух частей - открытой и закрытой. Открытую часть надо поместить в специальный файл на ПК, к которому осуществляетяся доступ. Открытая часть включает имя хоста. При подключении происходит сверка соотвествия открытой и закрытой части и имени подключаемого ПК, и при соответствии осуществляется доступ. Чтобы скопировать ключ нужно войти с правами root. Удаленно это не очень просто - комада su требует ввода пароля вручную. Приведенный скрипт решает проблему автоматизации копирования ключей.

#!/bin/bash
ssh-keygen -t ed25519
SSHKEY=`cat ${HOME}/.ssh/ed_id22519.pub`
ROOTPASS="12345678"
USER="user"
PASS="12345678"
for i in `cat hosts.txt`
do
(sleep 1;echo "${ROOTPASS}";sleep 1; echo "${SSHKEY}" >> /root/.ssh/autorized_hosts ; echo exit; sleep 1; echo exit) | sshpass -p ${USERPASS} ssh -tt -oStrictHostKeyChecking=no ${USER}@${i} su -
done

Поменять пароли

при наличии ssh доступа по ключу к root

#!/bin/bash

USER="root"
PASS="12345678"
for i in $(cat hosts.txt)
do 
ssh -oStrictHostKeyChecking=no root@$i 'chpasswd <<<"${USER}:${PASS}"'
done