KeyWeb
1111111111Rating 5.00 (2 Votes)
Понадобилось реализовать отображение приветствия, системных данных после входа в систему по SSH, среда CentOS 7 / Fedora 23 (исходная тема). Реализаций несколько - использовать *profile или использовать systemd сервис, в случае с profile все просто - пишем скрипт по получению системных сведений, добавляем в profile (спасибо around):

cat ~/.profile
...
~/log.sh

Все отлично, но возник вопрос, что если пользватель начнет использовать ключи типа --noprofile или source ~/.other_profile, в итоге был разработан "коленочный" метод, создаем systemd скрипт:
nano  /etc/systemd/system/myinfo.service
С текстом:

[Unit]
Description=MyInfo Service
After=local-fs.target

[Service]
Type=forking
ExecStart=/bin/sh /root/boot.sh

[Install]
WantedBy=multi-user.target

Далее пришем маленький скрипт по получению нужной инфы (в моем случае произвольный RHEL скрипт расположенный в /root/boot.sh):

#!/bin/bash
# Author xck http://sys-admin.kz

AUTHOR=`figlet sys-admin.kz`

# get memory size
MEM=`awk '/MemTotal/ {printf( "%.2f\n", $2 / 1024 )}' /proc/meminfo`

# infonfig info
IFCONFIG=`ifconfig | grep "inet"`

# hostname info
HOSTNAME=`hostname`

# get # of cpus
CPUS=`grep -c processor /proc/cpuinfo`

# figure out how CPU count is determined
if [ `grep -c "Using ACPI (MADT)" /var/log/dmesg` == "1" ] ; then
CPUCNTMETHOD="(via ACPI)"
else
CPUCNTMETHOD="(via MP table)"
fi

# grep the proc speed from /proc/cpuinfo
if [ `grep "^cpu MHz" /proc/cpuinfo | uniq | wc -l` == "1" ] ; then
SPEED=`grep "^cpu MHz" /proc/cpuinfo | uniq | awk -F : '{ print $2}' | awk -F . '{ print $1 }'`
else
SPEED="Speed mismatch. Speed list in /tmp/speedlist"
grep "^cpu MHz" /proc/cpuinfo > /tmp/speedlist
fi

# grep the proc cache from /proc/cpuinfo
if [ `grep "^cache size" /proc/cpuinfo | uniq | wc -l` == "1" ] ; then
CACHE=`grep "^cache size" /proc/cpuinfo | uniq | awk -F : '{ print $2 }'`
else
CACHE="Cache mismatch. Cache List in /tmp/cachelist"
grep ^cache /proc/cpuinfo > /tmp/cachelist
fi

# Write the /root/myinfo.txt file
ifconfig='/sbin/ifconfig'
uniq='/usr/bin/uniq'
#echo -e "\n" >/root/myinfo.txt
echo -e "\n${green}${AUTHOR}${reset}\n" > /root/myinfo.txt
echo "Computer name: " ${green}$HOSTNAME${reset} >> /root/myinfo.txt
echo `cat /etc/redhat-release` >> /root/myinfo.txt
echo ${CPUS}" CPU(s) detected "${CPUCNTMETHOD}" at Speed: ${SPEED} MHz with Cache: ${CACHE}" >>/root/myinfo.txt
echo ${MEM}"Mb of RAM" >>/root/myinfo.txt
for net in `$ifconfig | grep ^[a-z] | grep -v ^lo | awk '{ print $1}' | sed 's/.$//' | $uniq` ; do
for (( i=0; $i<16; i=$i+1 )) ; do
if [ `$ifconfig | grep -c $net$i` != "0" ] ; then
$ifconfig $net$i | grep $net | awk '{ printf "%s %s %s", $1, " MAC addr:", $5 }' >> /root/myinfo.txt
$ifconfig $net$i | grep "inet addr" | awk '{ print " IP " $2 }' >> /root/myinfo.txt
fi
done
done
#echo -e "\nIfocnfig info:\n${IFCONFIG}\n" >> /root/myinfo.txt
echo " " >>/root/myinfo.txt

# Make /root/myinfo.txt.net a duplicate of /root/myinfo.txt...
# cp -f /etc/issue /etc/issue.net

cat /root/myinfo.txt > /etc/motd

 

Для красивого шрифта лого ставим figlet:
dnf install figlet
после перезагрузки наблюдаем что то на подобии:
sa boot
 
 При наличии фантазии можно "запилить" к примеру такой:
sa banner systemd
 
 

Добавить комментарий


Обновить
Защитный код

KeyWeb

Сейчас 93 гостей и ни одного зарегистрированного пользователя на сайте

Вверх
Вниз