Как заставить работать sh?
Ansible вам в руки при таком количестве станций
Если я правильно понял все ваши хотелки для данного костыля, то вот, что примерно вышло:
Сам скрипт:#!/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
Но, я бы дописал какое-то логирование, хотя бы в консоль. А то интерфейсов мб несколько. И еще всякое. Как потом отлавливать на каких серверах что-то пошло не так без логирования вопрос открытый.