Я хотел бы написать простую прокси-серверную строку в Python, чтобы сидеть между соединением Telnet/SSH и локальным последовательным интерфейсом. Приложение должно просто переводить ввод-вывод между этими двумя, но отфильтровывать определенные недопустимые строки (соответствующие регулярным выражениям). (Это для лаборатории маршрутизатора/коммутатора, в которой пользователю предоставляется удаленный последовательный доступ к коробкам.)Лучший подход к прокси-серверу командной строки?
В принципе, клиент установил соединение с Telnet или SSH с демоном. Демон пропускает вход клиента (например)/dev/ttyS0 и передает вход от ttyS0 обратно клиенту. Тем не менее, я хочу иметь возможность занести в черный список определенные строки, поступающие от клиента. Например, команда 'delete foo' не должна быть разрешена.
Я не уверен, как лучше подойти к этому. Связь должна быть асинхронной; Я не могу просто дождаться возврата каретки, чтобы позволить буферам получать последовательный интерфейс. Соответствующие регулярные выражения против потока кажется сложным тоже, как все следующие должны быть перехвачены:
delete foo(enter)
del foo(enter)
el foo(ctrl+a)d(enter)
dl(left)e(right) foo(enter)
... и так далее. Единственным твердым разделителем является CR/LF.
Я надеюсь, что кто-то может указать мне в правильном направлении. Я просматривал модули Python, но до сих пор ничего не придумал.
Отличная точка зрения, и я должен был отметить это в вопросе, но, к сожалению, пользователь может использовать практически бесконечное количество отклонений команды. Представьте, что вы хотите, чтобы белый список всех возможных команд Bash, когда все, что вы хотите сделать, это блокировать вариации «rm». – 2009-09-26 23:34:40
Существует почти бесконечный список команд bash, которые могли бы, а не удалить файл, но перезаписать его. Это может быть так же вредно, как удаление. Звучит как сложная проблема. –