Вы заявляете: "Если я добавил бы eth0 с dhcp опцией к/etc/network/interfaces, это работает".
Почему не просто используют это? Если существует № eth0, может там быть eth1?
Если Вам не нужен специальный/локальный сервер имен, Вы могли добавить постоянную группу серверов имен серверов имен Google (8.8.8.8/8.8.4.4)
Если Вы ДЕЙСТВИТЕЛЬНО нуждаетесь в специальном/локальном и имеете некоторый контроль, по которому Вы могли сделать его очень статичным и помещать это там. (как 172.31.254.254,172.31.1.254)
Я думал, что у или Вас будет статический resolv.conf, ИЛИ Вы получили бы его от своего dhcp сервера.
Если Вы не можете заставить свой pxe загрузочный образ включать статический, Вы могли бы добавить/etc/rc.local (или equiv для Вашего дистрибутива), который ударяет значения на месте.
/proc/meminfo
файл содержит информацию, которая Вы после. Довольно легко проанализировать также.
Это получит Вас RAM и подкачка (в том порядке, единица является КБ во всех системах, которые я знаю):
awk '/^(MemTotal|SwapTotal)/{print $2}' /proc/meminfo
Для форматирования его Вы могли сделать что-то как:
printf "%s\t%d\t%d\n" $(hostname) \
$(awk '/^(MemTotal|SwapTotal)/{print $2}' /proc/meminfo)
Для объединения этого с ssh сделайте что-то как:
for host in your_list_of_servers ; do
printf "%s\t%d\t%d\n" $host \
$(ssh $host "awk '/^(MemTotal|SwapTotal)/{print \$2}' /proc/meminfo")
done
Сначала необходимо установить пароль меньше входа в систему, можно отослать эту страницу.
После этого можно использовать ниже сценария согласно требованию.
#!/bin/bash
# store username:ip combo here separated by a whitespace
_pair="root@192.168.250.30 user1@192.168.x.x user1@192.x.x.x.x"
for e in $_pair
do
# extract user and ips for each $e in $_pair
IFS='@'
set -- $e
_user="$1"
_ip="$2"
sleep 2
echo "Connecting to server '${_ip}' via SSH..."
ssh ${_user}@${_ip} "free -m | awk -v h=$HOSTNAME '(/Mem/||/Swap/){printf("%s\t%s%d\t",h,$1,$2)}'; echo -e"
done