Украшаем консоль в Linux

Sep 1, 2016 20:53 · 368 words · 2 minute read console

На просторах интернета можно найти множество статей о настройке и «раскраске» консоли в 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}";

Возможно, потребуется внести изменения в предложенный код — например, в зависимости от количества сетевых интерфейсов на сервере.

tweet Share