Вам не нужно активировать виртуальную среду, если вы просто хотите выполнить скрипт и выйти. Активация виртуальной среды — это просто удобный способ заменить исполняемый файл Python, отрегулировавPATH
1 . Итак, команда
$ source path/to/myenv/bin/activate
$ python myscript.py
$ deactivate
можно эффективно заменить на
$ path/to/myenv/bin/python myscript.py
Поэтому при запуске скрипта через ssh
просто выберите правильный путь к исполняемому файлу myenv
s python, и все готово:
$ ssh user@host "path/to/myenv/bin/python" <./myscript.py
1 Кроме этого, переменная окружения VIRTUAL_ENV
установлена, а имя окружения добавлено к PS1
.
Еще одна вещь, которую вы можете сделать, это использовать 'tr', чтобы превратить escape-символ во что-то другое, особенно если есть такой символ, как ^ или % или даже ^A (control -A ), который grep кажется доволен:
boldfoo=$(printf "not bold \033[1mfoo\033[m not bold")
echo $boldfoo
echo $boldfoo | tr '\033' '\001' | grep ^V^A # Type <Ctrl-V><Ctrl-A>
# Use the return value from this to see whether there are escape characters in $boldfoo.
Я использовал этот прием, чтобы использовать sed/grep для поиска многострочных шаблонов --превратить в ^A, а затем сопоставить шаблон с ^A и т. д. Придется немного повозиться, так как весь ввод теперь представляет собой одну строку, но работает с некоторым усилием.