Предложение:
#!/bin/bash
# Location where bash scripts are located.
phy_ssh=/opt/wiki_scripts/servers.sh
# Hosts where we will ssh into.
Phy_Hosts=( vmfarm1 p12 barclay maximus backupfirefly accountant 10.6.6.90 )
SendFiles () {
local host="$1"
ssh "root@$host" 'bash -s' <"$phy_ssh"
ssh "root@$host" cat /root/phy_machines.txt
}
# backup databases
for host in "${Phy_Hosts[@]}"; do
SendFiles "$host"
done >/opt/wiki_scripts/phy_machines.txt
host
в функции. vm_ssh
, двойные кавычки расширений переменных и удаление ненужных exit 0
в конце. for
. В этом может не быть необходимости, или это действительно может быть неправильно, если вы ожидаете, что первый вызов ssh
в функции что-то выведет, но это сделает функцию чище. После нескольких итераций комментариев:
Определяйте функцию SendFiles
только один раз, (более поздние ее определения переопределяют более ранние ). Пусть он возьмет всю информацию, необходимую для запуска для любого конкретного набора хостов.
#!/bin/bash
# Location where bash scripts are located.
phy_ssh=/opt/wiki_scripts/servers.sh
vm_ssh=/opt/wiki_scripts/virtualservers.sh
others_ssh=/opt/wiki_scripts/others.sh
# Hosts where we will ssh into.
Phy_Hosts=( vmfarm1 p12 barclay maximus backupfirefly accountant 10.6.6.90 )
Vm_Hosts=( icinga.stacc.ee ldap.stacc.ee mail.stacc.ee openvpn.stacc.ee dns.stacc.ee redmine.stacc.ee owncloud.stacc.ee www.stacc.ee git.stacc.ee )
SomeOther_list ( more machines )
SendFiles () {
local host="$1"
local script="$2"
local remotefile="$3"
ssh "root@$host" 'bash -s' <"$script"
ssh "root@$host" cat "$remotefile"
}
# backup databases
for host in "${Phy_Hosts[@]}"; do
SendFiles "$host" "$phy_ssh" /root/phy_machines.txt
done >/opt/wiki_scripts/phy_machines.txt
for host in "${Vm_Hosts[@]}"; do
SendFiles "$host" "$vm_ssh" /root/vm_machines.txt
done >/opt/wiki_scripts/vm_machines.txt
# and then, for example
for host in "${SomeOther_list[@]}"; do
SendFiles "$host" "$others_ssh" /root/other_machines.txt
done >/opt/wiki_scripts/other_machines.txt
Пробовали ли вы изменить библиотечные маршруты по умолчанию?
В зависимости от вашей версии это может быть в:
ld.so.conf или в ld.so.conf.d/libc.conf
Второй — только для libc , а первый — для глобальной конфигурации, где вы указываете маршруты для библиотек.