Как сетевой сервер автоматически реализует службу часов NTP в пакетном режиме?
Как сетевой сервер автоматически реализует службу часов NTP в пакетном режиме?
Недавно в проект были добавлены два новых устройства часов. Более сотни серверов Linux в сети должны быть настроены с помощью службы NTP для достижения синхронизации времени с устройством часов. Чтобы избежать проблем с настройкой каждого устройства по одному, был написан сценарий Python.
Сценарий разделен на 3 файла, первый - это скрипт python, второй - список хостов, который содержит два элемента IP-адреса и пароля, а третий - командный файл, включая установку программного пакета ntp из yum в конфигурацию файла параметров ntp.conf. Для запуска оператора работы службы NTP.
Выполните сценарий, вызовите эти два файла, и все серверы в сети будут установлены и настроены для завершения службы. Фактически, этот скрипт может выполнять все виды пакетных операций, нужно только изменить командный файл, скрипту не нужно вносить никаких изменений.
кошка cmd_list.txt
### Настроить файл NTP
mv /etc/ntp.conf /etc/ntp.conf.bak
echo 'сервер 192.168.5.200' >> /etc/ntp.conf
echo 'Fudge 192.168.5.200 stratum 10' >> /etc/ntp.conf
### Установите программный пакет NTP и запустите службу NTP.
rm /etc/yum.repos.d/*.repo
echo '[ol7_u5_base]' >> /etc/yum.repos.d/local.repo
echo 'имя = Oracle Linux' >> /etc/yum.repos.d/local.repo
echo 'baseurl = http: //192.168.5.250/redhat7' >> /etc/yum.repos.d/local.repo
echo 'gpgkey = http: //192.168.5.250/redhat7/RPM-GPG-KEY-redhat-release' >> /etc/yum.repos.d/local.repo
echo 'gpgcheck = 1' >> /etc/yum.repos.d/local.repo
echo 'enabled = 1' >> /etc/yum.repos.d/local.repo
yum install -y ntp *
systemctl start ntpd
systemctl включить ntpd
кошка host.txt
192.168.5.1 пройти1
192.168.5.2 пройти2
…
192.168.5.254 пройти254
кошка auto_ntp.py
импорт парамико
время импорта
import sys
импортный сокет
host = open (sys.argv [1])
host_list = []
имя пользователя = «корень»
для хоста в host.readlines ():
host_list.append(hosta.strip().split())
f = open ('log.txt', 'а')
cmd = open (sys.argv [2])
для имени хоста пароль в host_list:
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
ssh_client.connect(hostname=hostname, username=username, password=password)
print("Successfull connected to ", hostname)
cmd.seek(0)
stdin, stdout, stderr = ssh_client.exec_command('hostname')
f.write(hostname + ' ' + stdout.read().decode('utf-8') + "\n")
for ccc in cmd.readlines():
c = ccc.strip()
stdin, stdout, stderr = ssh_client.exec_command(c)
f.write(stdout.read().decode('utf-8') + "\n")
f.write(stderr.read().decode('utf-8') + "\n")
except paramiko.ssh_exception.AuthenticationException:
print("User authentication failed for " + username)
except socket.error:
print(hostname + " is not reachable.")
cmd.close ()
f.close ()
ssh_client.close ()
выполненный:
python auto_ntp.py host.txt cmd_list.txt
Выполняйте любые другие операции в пакетном режиме, если вы изменяете операторы операции в файле cmd_list.txt.