У меня есть сервер, который я использую нечасто, поэтому я бы хотел cron
задание, которое будет отключаться ежедневно, если ни один пользователь не вошел в систему через SSH и общие ресурсы SAMBA.
Как я могу определить, сколько существует активных SSH-соединений и сколько активных SAMBA-соединений?
Если оба эти значения равны нулю, сценарий cron отключит сервер.
Активное соединение ssh:
# netstat -an | grep -E "\:22[ \t]+" | grep ESTABLISHED | wc -l
1
Активное соединение Samba:
# netstat -an | grep -E "\:445[ \t]+" | grep ESTABLISHED | wc -l
или используйте lsof:
SSHCONNECTION=`lsof -i :22 | grep ESTABLISHED | wc -l`
SAMBACONNECTION=`lsof -i :445 | grep ESTABLISHED | wc -l`
echo "SSH connection: ${SSHCONNECTION} Samba connection ${SAMBACONNECTION}"
Вы можете проверить любые активные подключения к любой службе, используя следующую команду
netstat -an | grep ESTABLISHED | grep ":[portname] " | wc -l
По имени порта вам нужно выбрать порт службы, которую вы изучаете, для SSH это будет порт 22 (так что он должен быть grep ":22 "
) (пространство позади просто гарантирует, что это не другой порт.
Если вы хотите выбрать более одного порта (как в самбе), измените grep на egrep ":(port|port|port) "