[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: ssh remote command execution



29.09.2016 02:48, Artem Chuprina пишет:
On 29 September 2016 7:27:25 am GMT+11:00, sergio <mailbox@sergio.spb.ru> wrote:
Есть ssh к ipmi.

Туда можно залогиниться (правда только по паролю) и получить сериал
консоль, сказав: start /system1/sol1


Вот есть connectbot на андроиде, он помнит всё и по одной кнопке я
получаю сериал.


Так работает:
% sshpass -pPASS ssh -l sergio localhost 'ls -l'
total ...

Так нет:
% sshpass -pADMIN ssh -l ADMIN ipmi-host 'start /system1/sol1'

ATEN SMASH-CLP System Management Shell, version 1.04
Copyright (c) 2008-2009 by ATEN International CO., Ltd.
All Rights Reserved

->

Даёт cli, а 'start /system1/sol1' не отрабатывает!


P.S. sshpass, понятно, ни при чём:
% ssh ADMIN@moo-ipmi 'start /system1/sol1'
после ввода пароля тоже просто даёт cli.

Там может быть много разного. Начиная с того, что оно может хотеть терминала (ключ -t у ssh) и заканчивая тем, что start может оказаться запуском задачи в фоне, которая тем не менее выводит что-то в stdout/stderr, и тупо обламывается на этом выводе, потому что ssh уже отцепился. Я так понял по "дает cli", ssh не отцепляется, т.е. скорее первое.

Скорее всего, SSH-сервер просто игнорирует команду, переданную через параметр. То есть нужно эмулировать ввод команды с клавиатуры. Что-то вроде этого:

(echo 'start /system1/sol1'; cat) | ssh ADMIN@moo-ipmi

Эта команда сначала передаёт на сервер строку 'start /system1/sol1', а затем команда cat начинает передавать на сервер ввод с клавиатуры. Если ввод нужен не с клавиатуры, а откуда-то ещё, то вместо cat нужно подставить команду, которая генерирует этот ввод в stdout.


Reply to: