Кейлоггер не будет пытаться подделать приглашение оболочки, он почти наверняка оставит фоновый процесс, который отслеживает /dev/input
или что-то подобное (он также попытается скрыть себя в списке процессов). Вы определенно смотрите на проблему с неправильной стороны.
Обычным способом запуска ненадежных двоичных файлов является создание виртуальной машины и запуск их там. Даже это не дает 100% безопасности, но часто считается достаточно безопасным для практического использования (конечно, вы не будете запускать виртуальные машины с недоверенным кодом на рабочем сервере или внутри защищенной сети в банке).
Поскольку ваши данные хорошо табулированы, быстрый awk
выполнит большую часть вашей работы:
awk 'NR>2 && $7=="Suspended" {print "sessionID{"$3"}"}' /etc/nxserver.log | xargs rm -f
Чтобы увидеть список файлов, которые он удалит перед запуском, используйте только:
awk 'NR>2 && $7=="Suspended" {print "sessionID{"$3"}"}' /etc/nxserver.log
cd "/var/lib/nxserver/db/running" && \
perl -lne '
@F = unpack "x25A32x31A12";
unlink "sessionId{$F[0]}" if $F[1] eq "Suspended";
' /etc/nxserver.log
unpack
пропускает первые 25 символов, затем захватывает следующие 32 = sessionId,
и аналогичным образом захватывает поле состояния. Наконец, unlink
удаляет
файл.
Надеюсь, я правильно понял: вы хотите удалить все файлы с идентификаторами сессий, перечисленными как приостановленные? Это было бы
for SessionID in `sed -n '/Suspended/s/.*unix-gnome *\(\S*\).*/\1/p' /etc/nxserver.log`; do
rm /var/lib/nxserver/db/running/sessionId\{$SessionID\}
done
Скрипт sed извлекает идентификаторы сессий из приостановленных сессий, для каждой из которых удаляется соответствующий файл.
Если это не то, что вы хотите, пожалуйста, уточните свой вопрос.