Если информация «выполнено» или «не выполнено» не очень конфиденциальна, вы можете использовать инструмент чата командной строки. Например, клиент XMPP, такой как mcabber. В этом случае вам потребуется соответствующий онлайн-аккаунт. Может быть, взгляните на mcabber .
Чтобы использовать электронную почту, ваше имя пользователя/пароль не обязательно должны быть внутри вашего скрипта. Если вы управляете Linux-сервером, вы можете установить локальный почтовый сервер (, postfix, exim4,... )и использовать локальную почтовую команду. Но если этим сервером управляет кто-то другой, ваш пароль по-прежнему находится (root ), доступный в файле конфигурации.
Если вы не против приобрести дополнительную (сотовую )сим-карту, есть возможность отправить сообщение WhatsApp через командную строку :см. yowsup на github. Насколько я помню, сим-карта не должна использоваться ни для одного телефонного номера, чтобы ее можно было зарегистрировать скриптом. Но вы должны разобраться сами, потому что я просто помню этот проект, но никогда не использовал его сам.
Это статья из журнала Linux, в которой описывается способ регистрации сим-карты. Может быть, у вас есть доступ к этому журналу?
Надеюсь, этот пост будет вам полезен...
Я думаю, вы хотите, чтобы строка cpu Usage
отображалась в той же строке каждый раз и сразу же после строки cpu Idle
. К добиться того, что вы можете использовать клеммы tput
иel
(clr_eol
)возможность удалить строку иcuu
(parm_up_cursor
)переместить n строк вверх. Вы можете прочитать о возможностях терминала в man terminfo
. Твой скрипт будет выглядеть так:
#!/bin/bash
PREV_CPU_USE=0
PREV_CPU_IDLE=0
PREV_EPOCH_TIME=0
# Setting the delimiter
IFS=$'\n'
counter=0
while true; do
# Getting the total CPU usage
CPU_USAGE=$(head -n 1 /proc/stat)
# Getting the Linux Epoch time in seconds
EPOCH_TIME=$(date +%s)
# Splitting the /proc/stat output
IFS=" " read -ra USAGE_ARRAY <<< "$CPU_USAGE"
# Calculating the used CPU time, CPU idle time and CPU total time
CPU_USE=$((USAGE_ARRAY[1] + USAGE_ARRAY[2] + USAGE_ARRAY[3] + USAGE_ARRAY[6] + USAGE_ARRAY[7] + USAGE_ARRAY[8] ))
CPU_IDLE=$((USAGE_ARRAY[4] + USAGE_ARRAY[5]))
# Calculating the differences
DIFF_USE=$((CPU_USE - PREV_CPU_USE))
DIFF_IDLE=$((CPU_IDLE - PREV_CPU_IDLE))
DIFF_TOTAL=$((DIFF_USE + DIFF_IDLE))
DIFF_TIME=$((EPOCH_TIME - PREV_EPOCH_TIME))
printf "\r%s%s Usage: %d (counter = %d)\n" "$(tput el)" "${USAGE_ARRAY[0]}" "$((DIFF_USE*100/(DIFF_TOTAL*DIFF_TIME)))" "$counter"
printf "\r%s%s Idle: %d (counter = %d)" "$(tput el)" "${USAGE_ARRAY[0]}" "$((DIFF_IDLE*100/(DIFF_TOTAL*DIFF_TIME)))" "$counter"
counter=$((counter + 1))
tput cuu 1
# Assigning the old values to the PREV_* values
PREV_CPU_USE=$CPU_USE
PREV_CPU_IDLE=$CPU_IDLE
PREV_EPOCH_TIME=$EPOCH_TIME
# Sleep for one second
sleep 1
done
Я добавил дополнительную counter
переменную для целей отладки. Это увеличивается после каждой печати, чтобы сообщить пользователю, что старая строка заменяется новой строкой на экране.
Я также заменил ваши звонки на echo
на printf
, так как это удобнее.