Вот контекст вопроса:
Чтобы я мог печатать документы на работе, мне нужно скопировать файл на другой компьютер, а затем распечатать с этого компьютера.(Не спрашивайте. Это сложно и другого жизнеспособного решения нет.) Оба компьютера - Linux, и я работаю в bash.В настоящее время я делаю так: я scp
передаю файл на компьютер печати, а затем ssh
и печатаю из командной строки.
Вот что я хотел бы сделать:
Чтобы облегчить мне жизнь, я бы хотел объединить эти два шага в один.Я мог бы легко написать функцию, которая выполнила бы оба этих шага, но мне пришлось бы вводить свой пароль дважды.Можно ли как-то объединить шаги, чтобы я предоставлял свой пароль только один раз?
Прежде чем кто-либо это предложит, ssh-logins на основе ключей не подходят.Он был специально отключен администраторами по соображениям безопасности.
Решение:
В результате я сделал модификацию второго решения, предоставленного Wrikken.Простое завершение его первого предложения в функции сделало бы работу, но мне понравилась идея печати нескольких документов без необходимости вводить пароль один раз для каждого документа.У меня довольно длинный пароль, и я ленивый машинистка:)
Итак, я взял последовательность команд и обернул их в скрипт на python.Я использовал python, потому что хотел параметризовать скрипт, и я считаю, что это проще всего сделать в python.Я обманул и просто запускал команды bash с python через os.system.Python только что обработал параметризацию и управление потоком.Логика была следующей:
if socket does not exist:
run bash command to create socket with timeout
copy file using the created socket
ssh command to print using socket
В дополнение к использованию тайм-аута, я также включил опцию есть в моем скрипте python, чтобы вручную закрыть сокет, если я захочу это сделать.
Если кому-то понадобится код, просто дайте мне знать, и я либо вставлю его в корзину, либо выложу в мой репозиторий git.