В чем разница между терминалом и шеллом в ssh?
свой putty пишешь?
pty-req: sshd - tty-master - tty-slave - sh
shell: sshd - pipe - sh
некоторые программы будут работать иначе если не обнаружат у себя терминала
Ага, тока без гуя
Спасибо. Вот это уже похоже на то, что мне нужно, осталось разобраться с терминалами - я ни разу не юниксоид
pty-reqоп
т.е. я удаленно теоретически не могу запустить абсолютно любой процесс (если это прямо не запрещено составителем программы)?
опВообще, для того и задумывалось. Там есть даже тип запроса "exec", который тупо запускает то, что ты его просишь (если у пользователя, под которым ты заходишь есть права на это). Также можно сигналы слать и прочая
т.е. я удаленно теоретически не могу запустить абсолютно любой процесс (если это прямо не запрещено составителем программы)?
понял, уровень образования повысился
Вопрос, а какова задача? Если нужен интерактивный режим, то используй псевдотерминал, если скрипты запускать, то sh будет достаточно.
Есть хороший документ про ssh - RFC4254, почитай.
даже если по ssh открыт root, то тоже есть ограничения?
Вопрос, а какова задача? Если нужен интерактивный режим, то используй псевдотерминал, если скрипты запускать, то sh будет достаточно.Задачка - некоторый сканер, который работает хочет выполнять некоторые команды, получать ответы, обрабатывать их и т.д.
Есть хороший документ про ssh - RFC4254, почитай.
В принципе, у меня уже есть реализация, которая работает через терминал, но она довольно глючная и тормозная, как из-за того, что довольно криворукий чувачок писал, так и из-за того, что использует какую-то древнющую версию сторонней библиотеки, которая глючная плюс пилена, всеми кому не лень. А я тут решил сделать по-человечески, вот и изучаю возможности этого дела.
Все rfc по ssh сегодня прочитал, но некоторые вопросы остались, думаю, что больше из-за того, что я в unix не слишком силен. Скажем, про escape-последовательности в rfc ничего не сказано. Может, это не их область, но в книженции SSH. The Secure Shell приводятся примеры escape-последовательностей, которые можно слать серверу, там есть последовательность отключения escape-последовательности. А у меня бывает, они приходят и сейчас удаляются руками. Вот, пытаюсь, в частности, узнать - можно ли победить эту проблему стандартными средствами. Плюс, что может поломаться, если я переключу с терминала на шелл
Если root'ом можно по ssh логиниться, то и делать можно то, что root'у разрешено
а, т.е. для рута нет разницы - по ssh или чисто tty? *не имея в виду, конечно, сетевые функции*
Вроде как, да, если не прав - пусть знающие люди поправят
Я что-то не совсем понимаю. Вот есть процесс от пользователя 0 (/bin/bash он получает последовательности символов: в одном случае от tty, в другом по сети. Что с ними делать, уже решает вне зависимости от того, откуда они пришли. Могут из файла поступать, например. Тут что-то может быть непонятно?
Что с ними делать, уже решает вне зависимости от тогово
т.е. все лежит на "пальцах" написавших его людей?
"его" — /bin/bash?
человеческий фактор
Можно залогиниться по ssh'у на комп под рутом или без рута, но потом заюзать sudo или su, ввести rm -rf /* и будет плохо, да.
1) с ssh ты хер выполнишь оную команду
2) с ssh ты хер выполнишь оную команду, зато с tty...
3) да хоть с ssh, хоть с tty - нам похуй
PS: А вообще терминалы, особенно не псевдо, а какой-нибудь VT10x или VT2xx, штуки сложные и ИМХО лучше с ними по доброй воле не связываться
Спасибо, с этим теперь, вроде, ясно
раньше(во времена мейнфреймов) терминалы были реализованы в железе и подсоединялись терминальными линиями связи со своими протоколами, сейчас концептуально ничего не изменилось, а физически - все эмулируется
Кстати, putty эмулирует linux console и vt100
И более того, локальные консоли - это тоже эмуляторы терминалов. Эмулируются ядренным драйвером.
Свойства терминалов описаны в /etc/termcap
Можно попытаться реализовать свой терминал с требуемыми возможностями (capability) и задекларировать в /etc/termcap.
В чем разница между терминалом и шеллом в ssh?
концептуально разные понятия.
терминал - это псевдографический интерфейс, который обеспечивает вывод информации на экран и обрабатывает клавиатуру и мышь (если терминал имеет мышь)
шелл - это программа, которая выполняет команды, которые вводит пользователь.
ты наговорил очевидностей и при этом не ответил на вопрос. В чем был смысл?
ты наговорил очевидностей и при этом не ответил на вопрос. В чем был смысл?
в том, что если хочется больше чем стандартный терминал - то нужно копать /etc/termcap
P.S.
никто на очевидный вопрос "В чем разница между терминалом и шеллом в ssh?"
не написал такой же очевидный ответ.
Претензии выскажи зеркалу, малыш.
P.S.Потому что они очевиден?
никто на очевидный вопрос "В чем разница между терминалом и шеллом в ssh?"
не написал такой же очевидный ответ.
Претензии выскажи зеркалу, малыш.К чему так оскорбляться?
Прошу не ругать за безграмотность (любую).
а ты ему про tty отвечаешь.
нахер это ему? тем более, что даже не терминал, а файл устройства.
Я ему ни про что не отвечал, потому что сам не знаю, о чем идет речь, хотя в твоих сообщениях ничего нового для себя не нашел.
Я ему ни про что не отвечал, потому что сам не знаю, о чем идет речь, хотя в твоих сообщениях ничего нового для себя не нашел.ну и правильно, я же не тебе отвечал
Ну можешь тогда для меня теперь ответить на вопрос из первого сообщения? Потому что я его (ответа) не нашел. Вот что странно. Имеено об этом тебе и написал.
Ну можешь тогда для меня теперь ответить на вопрос из первого сообщения? Потому что я его (ответа) не нашел. Вот что странно. Имеено об этом тебе и написал.пацану нужно что-то из этого:
либо терминал с особыми свойствами
либо настроить sudo
либо все вместе.
терминал - это псевдографический интерфейс, который обеспечивает вывод информации на экран и обрабатывает клавиатуру и мышь (если терминал имеет мышь)
И как это вяжется с ssh? Запросил я у сессии терминал - у меня что ли начнут сами события мыши или клавиатуры передаваться или я их еще как-то должен передавать отдельно, если да - то как?
вопрос задал человек, которому что терминал, что шелл - один хер:
Как уже было отвечено ранее - шелл там запускается в обоих случаях, только данные там ходят по-разному между ним и sshd. Вопрос был в том, как это влияет на данные, которые мне приходят в ответ.
пацану нужно что-то из этого:
либо терминал с особыми свойствами
либо настроить sudo
либо все вместе.
То, что мне нужно, я написал в одном из предыдущих постов, правда, не указал, что на удаленной машине я настраивать ничего не могу. А зачем мне терминал с особыми свойствами? А sudo здесь вообще при чем? Да и какое судо на циске?
Да и какое судо на циске?ssh к циске?
Если что, оно там сильно ненатуральное (если речь про IOS, а не про NX-OS)
ssh к циске?Что значит сильно ненатуральное (в частности, на IOS)? Вполне нормально работает.
Если что, оно там сильно ненатуральное (если речь про IOS, а не про NX-OS)
Разве оно не утащено туда с кунигу^куникса?
Каналы закрывает без спроса, например.
>telnet cisco-nexus 22
Connected to cisco-nexus.
Escape character is '^]'.
SSH-2.0-OpenSSH_4.5
>telnet cisco-ios 22
Connected to cisco-ios.
Escape character is '^]'.
SSH-2.0-Cisco-1.25
Ну, как бы rfc не запрещает закрывать канал, если он не используется некоторое время (да и вообще, в любое другое время). Вон, на многих сайтах тоже сессия протухает, если ей некоторое время не пользоваться, это ж не значит, что они сильно ненатуральные. Никто не обязан openssh использовать - кому, что больше подходит, у меня сейчас, например, тоже не openssh клиентская либа
у меня сейчас, например, тоже не openssh клиентская либаа какая? перловая?
И как это вяжется с ssh?
В том-то и дело что никак не вяжется
Запросил я у сессии терминал - у меня что ли начнут сами события мыши или клавиатуры передаваться или я их еще как-то должен передавать отдельно, если да - то как?
у тебя есть ssh-клиент, который эмулирует терминал и обрабатывает события клавиатуры, мыши и управляет экраном.
Причем ssh-клиент говорит серверу какой он терминал эмулирует, у сервера в /etc/termcap прописаны свойства многих терминалов. И сбольшой вероятностью в /etc/termcap описан терминал, который сообщает ssh-клиент.
Один хер: ssh или telnet или serial - механизм взаимодействия "терминал - сервер" один и тот же, только транспорт разный.
ssh протокол описывает только безопасное выполнение комманд.
sudo - нужно для разграничения прав запуска комманд.
Ты напиши более подробно и понятно про свою задачу и поменьше выебывайся, падаван нна.
Ух ты, и такое бывает? Я сталкивался только, когда проходит некоторое время
Бывает, в ssh v2 при подключении без терминала циска закрывает канал без церемоний и следующую команду выполнить уже нельзя - соединение закрыто.
Ты напиши более подробно и понятно про свою задачу и поменьше выебывайся, падаван нна.Вообще, я нигде не выебывался. Задача: залогиниться на тачку, выполнить там несколько команд, получить от них результат. Выполняемые команды могут зависеть от результатов предыдущих. Все это нужно сделать без участия пользователя. Поддерживаемые системы различны: циски, линунксы, соляра, бсд, наборы команды на них различные.
либо ssh-модуль
либо телнет-модуль
либо rsh-модуль
Expect самое то.
тот же PuTTY, например.
Очевидно, нужна автоматизация (там, где подразумевается интерактивность).
посмотри на fabric
1. Я не могу заставлять клиентов ставить у себя дополнительно какие-то вещи: перл, питон и любые другие - максимум набор dll'ек, которые будут рядышком с прогой валяться.
2. Эта штука является не полноценной системой, а частью более сложной программы, которая написана на С++ и с которой нужно уметь легко взаимодействовать, т.к. обработка результатов довольно нетривиальная. При этом мы не можем перенести логику на новый язык (чтобы не было дублирования старого и нового вариантов, старый используется еще для других целей).
3. Плюс панический страх руководства всего стороннего Дай им волю, мы бы вообще руками писали вообще без сторонних библиотек. Т.е. если на libssh2 или что-то подобное они еще согласны, то тот же питон уже не пойдет - об этом уже было много разговоров.
Т.е. выбор у меня не особо велик, поэтому я как-то и не делал акцент на то, как это сделать.
В ssh ни терминалов, ни шеллов нет.
Терминал --- это устройство, симулирующее телетайп.
Шелл --- интерпретатор (диалоговый) командного языка.
> можем там запросить создание псевдо-терминала (pty-req)
Тебе выделят, не "создадут," это не обязательно, а именно выделят,
потому что псевдотерминалы могут быть жёстко прописаны нодами в /dev,
псевдотерминал. Подробности можно прочитать в openpty(3) и в т.п.
документации.
---
Q7: А что за suxx?
A7: unix.
Оставить комментарий
agent007new
Прошу не ругать за безграмотность (любую).В общем, так: когда мы открываем канал в ssh, то можем там запросить создание псевдо-терминала (pty-req а можем просто шелл запросить (shell). При запросе терминала мы можем указать размеры терминала, и они даже могут как-то учитываться удаленной стороной. В чем будет разница в приходящих мне данных? Т.е. что может придти для терминала, но не придет для шелла и наоборот? В частности, escape-последовательности могут приходить в шелл,