Я пытаюсь написать сценарий оболочки, который позволяет мне подключиться к удаленному компьютеру, чтобы узнать, какие пользователи запускают процесс vtwm более 14 дней. Вот что я написал до сих пор.grep в Shell Script
Есть две проблемы
там может быть больше, чем один пользователь с этим активным процессом. Как сохранить все из них в переменной?
Как определить, какой из вас был зарегистрирован более 14 дней?
Следующий код был написан с допущением, что существует только один пользователь с активным процессом vtwm. Но это не работает, потому что команда grep не распознает переменную $ u. , поэтому я никогда не могу получить дату, на которую пользователь вошел. Я не могу заставить mth1 и day1 работать из-за проблем с grep.
u=$(ssh host "w | grep vtwm | cut -d' ' -f1")
echo "USER:"$u
if [ -n "$u" ] then
mth1=$(who | grep -i $u | cut -d' ' -f10 | cut -d'-' -f2)
mth2=$(date +"%m")
day1=$(who | grep -i $u | cut -d' ' -f10 | cut -d"-" -f2)
day2=$(date +"%d")
if [ $mth1==$mth2 ] then
#do something
elif[ $mth1!=$mth2 ] then
#do something
fi
fi
Код ошибки. Переменная '$ u' выводится ssh'ing на другую машину, но' $ mth1' и '$ day1' основаны на локальных вызовах' who'? – danfuzz
Включите функцию декомпозиции оболочки с помощью 'set -vx'. Вам будет намного легче увидеть, где и почему ваш код начинает сбой. Извините, что это слишком много кода для того, что вы заявили о цели. Посмотрите на использование 'awk' в качестве фильтра, чтобы уменьшить количество вызовов до' who' до 1X. Удачи. – shellter