Одна рекомендация ... отредактируйте вопрос следующим образом, чтобы дать более подробный / релевантный ответ:
Первое, что я заметил, это то, что ваша переменная $ olduser настроена не на подстановку команд, а на буквальную строку «who | grep | -u, -q +30»
Подстановка команд обычно выполняется с помощью $ (command_to_be_run)
или обратных кавычек вроде `command_to_be_run`
. И я не думаю, что вы ищете , который
, а скорее должны смотреть, как упоминалось выше, на команды учета, такие как logins
или last
, или даже файлы журналов .
Что-то вроде цикла for для генерации списка пользователей, а затем с использованием этой последней и вашей подстановки переменных для генерации даты последнего входа в систему для каждого отдельного объекта, чтобы вы могли выполнить оператор оценки, такой как if-then-fi if они старше 35 дней.
например. В Solaris 10 с Bash
LAST_LOGON_DATE=$(last $user | awk 'NR==1{print $5,$6}' | custom_date_convert_cmd )
if [[ ${LAST_LOGON_DATE} -ge 35 ]]; then
echo "${user} is expired. Last logon: ${LAST_LOGON_DATE} days ago"
important_commands_here
fi
Очевидно, что sed / perl, вероятно, был бы лучшим решением с точки зрения скорости обработки через AWK, но если вы находитесь в исправлении и вам просто нужно что-то работать, это, вероятно, хорошее место для начала.
Найдите STIG своей системы в DISA, так как обычно они включают команды для выполнения именно этого ... проверка последних входов в систему, пользователей без паролей и т. Д.
https: //www.stigviewer.com / stigs
Мне удалось решить эту проблему с помощью экранного подхода. Это работает в фоновом режиме, и я не вижу прогресса, но для меня это нормально
screen -d -m -S umake-eclipse
screen -S umake-eclipse -p 0 -X stuff "umake ide eclipse\n\n"
Ответ @Kusalananda не будет работать на практике, поскольку выполнение команды umake
останавливается после команды send
.
Вот расширенное, рабочее решение:
#!/usr/bin/expect
spawn umake ide eclipse
expect "Choose installation path:" { send "\r" }
interact
Использование очень упрощенного сценария expect
:
spawn umake ide eclipse
expect "Choose installation path:" { sleep 1; send "\r" }
Запуск:
$ expect -f script.expect