@fokin_nikolay1989

Как заставить работать sh?

Доброго времени суток!
Написал код по подключению к удаленным рабочим станциям и выполнения команд на ней, но не все так гладко работает, не знаю как заставить читать ip из файла и как заставить выполниться" grep DOMAIN=..." на удаленном хосте
#!/bin/bash
clear
echo "Подключаемся к хосту"
ssh root@192.168.1.1 << EOF
yum -y screen
grep 'DOMAIN=' /etc/sysconfig/network-scripts/ifcfg-eth0 &> /dev/null; if [ $? -eq 0 ]; then export DOMAIN=locl.dom && sed -i '' -e "s|DOMAIN=.*$|DOMAIN=$DOMAIN|" /etc/sysconfig/network-scripts/ifcfg-eth0; else echo "DOMAIN=locl.dom" >> /etc/sysconfig/network-scripts/ifcfg-eth0; fi
service network restart
  • Вопрос задан
  • 197 просмотров
Решения вопроса 1
@Hanharr
Если я правильно понял все ваши хотелки для данного костыля, то вот, что примерно вышло:

Сам скрипт:
#!/usr/bin/env bash

FILE="/path/to/file_with_ip/ip"
USER="root"

while read -r ip_addr; do
    
ssh "$USER"@"$ip_addr" << "EOF"
    interface=$(/usr/sbin/ifconfig -a | grep "UP" | grep -v "lo" | awk -F ": " '{ print $1 }')
    if grep 'DOMAIN' /etc/sysconfig/network-scripts/ifcfg-$interface &>/dev/null; then export DOMAIN=SIZ37.LAN && sed -i -e "s|DOMAIN=.*$|DOMAIN=$DOMAIN|" /etc/sysconfig/network-scripts/ifcfg-$interface; else echo "DOMAIN=locl.dom" >> /etc/sysconfig/network-scripts/ifcfg-$interface; fi
    service network restart
EOF

done < <(cat $FILE)


Файл IP-адресов, заканчиваться должен пустой строкой, иначе последний адрес потеряете:
$cat /path/to/file_with_ip/ip
172.16.0.1
172.16.0.2


Но, я бы дописал какое-то логирование, хотя бы в консоль. А то интерфейсов мб несколько. И еще всякое. Как потом отлавливать на каких серверах что-то пошло не так без логирования вопрос открытый.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Ansible вам в руки при таком количестве станций
Ответ написан
Комментировать
Radjah
@Radjah
Закинуть скрипт с помощью scp и выполнить его без вот этого всего.

Логиниться рутом по ssh - порочная практика.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы