Украшаем консоль в Linux
Sep 1, 2016 20:53 · 368 words · 2 minute read
На просторах интернета можно найти множество статей о настройке и «раскраске» консоли в Linux. Предлагаю измененный вариант ssh-приветствия и настройки .bashrc
и .profile
для комфортной работы в консоли!
Все необходимые настройки для работы в консоли хранятся в конфигурационных файлах .bashrc
и .profile
в домашнем каталоге пользователя. Подробно останавливаться на их содержимом нет смысла — информацию ищите здесь или используйте man bash
. Часть информационного сообщения, выводимого при подключении на сервер по ssh находятся в /etc/motd
(информацию о последнем логине считаем полезной и удалять не будем).
Итак, для изменения настроек консоли Linux нужно подключиться на сервер и, находясь в домашней директории пользователя для которого применяются изменения, выполнить следующие команды:
mv .bashrc .bashrc.mybackup
mv .profile .profile.mybackup
cp /etc/skel/.bashrc ~/
cp /etc/skel/.profile ~/
sed -i 's/#force/force/' ~/.bashrc
sed -i 's/#force/force/;s/32/31/' ~/.bashrc
sed -i 's/#alias/alias/g' ~/.bashrc
sed -i 's/#alias/alias/g' ~/.bashrc
sed -i 's/ls --color=auto/ls --color=always/' ~/.bashrc
echo -e '\nexport LESS=-R' >>~/.bashrc
Для изменения ssh-приветствия делаем следующее:
> /etc/motd
touch /etc/profile.d/sshinfo.sh
chmod +x /etc/profile.d/sshinfo.sh
Содержимое созданного нами файла /etc/profile.d/sshinfo.sh
должно быть следующим:
SystemMountPoint="/";
LinesPrefix=" ";
b=$(tput bold); n=$(tput sgr0);
UserName=$(whoami);
WAN_IP=$(/sbin/ifconfig | grep -A 1 eth0 | grep "inet addr" | cut -d":" -f2 | cut -d" " -f1);
LAN_IP=$(/sbin/ifconfig | grep -A 1 eth1 | grep "inet addr" | cut -d":" -f2 | cut -d" " -f1);
HOST=$(hostname -f);
SystemLoad=$(cat /proc/loadavg | cut -d" " -f1);
ProcessesCount=$(cat /proc/loadavg | cut -d"/" -f2 | cut -d" " -f1);
MountPointInfo=$(/bin/df -Th $SystemMountPoint 2>/dev/null | tail -n 1);
MountPointFreeSpace=( \
$(echo $MountPointInfo | awk '{ print $6 }') \
$(echo $MountPointInfo | awk '{ print $3 }') \
);
UsersOnlineCount=$(users | wc -w);
UsedRAMsize=$(free | awk 'FNR == 3 {printf("%.0f", $3/($3+$4)*100);}');
SystemUptime=$(uptime | sed 's/.*up \([^,]*\), .*/\1/');
echo -e "${LinesPrefix}${n}Hello, ${b}${UserName}${n}! Welcome to ${b}${HOST}\n";
if [ ! -z "${LinesPrefix}" ] && [ ! -z "${SystemLoad}" ]; then
echo -e "${LinesPrefix}${b}System load:${n}\t${SystemLoad}\t\t\t${LinesPrefix}${b}Processes:${n}\t\t${ProcessesCount}";
fi;
if [ ! -z "${MountPointFreeSpace[0]}" ] && [ ! -z "${MountPointFreeSpace[1]}" ]; then
echo -ne "${LinesPrefix}${b}Usage of $SystemMountPoint:${n}\t${MountPointFreeSpace[0]} of ${MountPointFreeSpace[1]}\t\t";
fi;
echo -e "${LinesPrefix}${b}Users logged in:${n}\t${UsersOnlineCount}";
if [ ! -z "${UsedRAMsize}" ]; then
echo -ne "${LinesPrefix}${b}Memory usage:${n}\t${UsedRAMsize}%\t\t\t";
fi;
echo -e "${LinesPrefix}${b}System uptime:${n}\t${SystemUptime}";
echo -e "${LinesPrefix}${b}WAN ip:${n}\t${WAN_IP}\t\t${LinesPrefix}${b}LAN ip:${n}\t\t${LAN_IP}";
Возможно, потребуется внести изменения в предложенный код — например, в зависимости от количества сетевых интерфейсов на сервере.