Я часто использую ssh
и sftp
бок о бок в моем терминале Ubuntu. Типичный рабочий процесс выглядит следующим образом:
поместите
несколько файлов в каталог с SFTP. chmod
по SSH. Выполнение всего этого с двумя окнами терминала может немного раздражать, поэтому я бы предпочел, чтобы мне казалось, будто все это происходит в рамках одного процесса.
У меня есть следующие вопросы:
Есть ли веская причина, по которой процессы
ssh
иsftp
должны храниться отдельно? Или для меня было бы «безопасно» написать приложение, которое объединяет их?
Спасибо!
Обновление: Похоже, что sftp
поддерживает множество общих команд терминала. Однако он по-прежнему не поддерживает произвольные команды терминала, как в случае с ssh
.Так что я все же хотел бы увидеть ответ на эти вопросы, а не обоснование того, почему ответ не нужен.
Нет ничего лучше "команд SSH". Это команды оболочки. Для терминала / клиента SSH оболочка - это просто черный ящик с входом и выходом. Клиент даже не понимает, что вы вводите какие-то команды, пусть только понимает их.
Таким образом, любое решение, которое делает то, что вы просите, должно быть адаптировано для определенной системы и оболочки, чтобы иметь возможность понять, что вы
Теоретический клиент, конечно, может иметь определенную команду или префикс, который вы бы использовали для указания, если вводимая вами команда является командой оболочки или SFTP. Аналогично ftp
префикс / команда escape-to-local-shell !
.
Но даже в этом случае у вас могут возникнуть трудности с сопоставлением текущих рабочих каталогов. Если ни для чего другого, то потому, что SFTP может быть chrooted, а оболочка - нет. Имейте в виду, что SFTP - это независимая система, которая теоретически может использовать совершенно другое представление файловой системы.
Таким образом, можно сделать вывод, что это выполнимо, но это так много взлома и так много специфичных для системы и оболочки, что сделать систему универсальной вряд ли возможно. Для надежного решения потребуются некоторые серверные компоненты (например, особый тип оболочки).
Я знаю, о чем пишу, потому что я реализовал часть этого для моего клиента SFTP, WinSCP. Там, в рамках сеанса SFTP, вы можете открыть окно терминала / консоли , которое запускает сеанс оболочки и меняет его рабочий каталог на текущий рабочий каталог SFTP (отправив оболочку cd
команда). Так что я знаю, насколько это хакерское и ненадежное.
Используйте sshfs
для монтирования удаленной файловой системы. Затем запускайте команды или копируйте файлы так же, как в локальной системе. Обратитесь к документации вашей системы , чтобы узнать, как она используется.
Я не знаю ничего, что буквально объединяет sftp и ssh в единый интерфейс, который вы описали. Не зная более детально, что вы хотите видеть от такого клиента, я не могу дать лучшего ответа.
Есть и другие способы сделать то, что вы описываете.
sftp может делать все это
rbabchis@haze:~/tmp$ sftp localhost
rbabchis@localhost's password:
Connected to localhost.
sftp> mkdir test
sftp> cd test
sftp> put /home/rbabchis/chicken.JPG
Uploading /home/rbabchis/chicken.JPG to /home/rbabchis/test/chicken.JPG
/home/rbabchis/chicken.JPG 100% 2035KB 2.0MB/s 00:00
sftp> chmod 777 chicken.JPG
Changing mode on /home/rbabchis/test/chicken.JPG
sftp> quit
rbabchis@haze:~/tmp$
Передачи в сеансе терминала SSH
Но если речь идет о передаче файлов во время удаленного приглашения bash через SSH, я еще не видел стандартного способа сделать это. Однако ваш вопрос напомнил мне о 90-х годах, когда мы использовали такие вещи, как Zmodem для передачи через терминальный сеанс. Я погуглил и посмотрел, что нашел.
Проверьте это (используя Zmodem поверх ssh):