LINUX.ORG.RU
решено ФорумAdmin

ifconfig через ssh

 , ,


0

1

При попытке получить статистику соединения от роутера командой вида «ssh 192.168.1.1 -p 22 -l root ifconfig» получаю ошибку «ifconfig не найден». При этом команда «ssh 192.168.1.1 -p 22 -l root '/sbin/ifconfig'» работает. Что и где нужно прописать на роутере для получния статистики по первому варианту команды «ssh 192.168.1.1 -p 22 -l root ifconfig»?

не знает твой пользователь где лежит ifconfig потому и нужен полный путь задай соответсвующие переменные окружения и будет работать просто как ifconfig , а не /sbin/ifconfig

avernus ()
Ответ на: комментарий от avernus

Если зайти на роутер «ssh 192.168.1.1 -l admin -p 22» и выполнить ifconfig, то все работает, а так нет:

root@raspberrypi:/home/pi# ssh 192.168.1.1 -l admin -p 22 ifconfig sh: ifconfig: not found

sapper1982 ()
Ответ на: комментарий от avernus

Переменные окружения я задаю для пользователя на клиенте, или на роутере?

sapper1982 ()

По умолчанию рабочее окружение пользователя не загружается. Для этого есть директива

PermitUserEnvironment
в вашей /etc/ssh/sshd_config (или где у вас там конфига)

znenyegvkby ()
Ответ на: комментарий от samarin

То есть ваш shell такой умный, что ″$PATH″ в таком виде и уйдёт на удалённый сервер, а не будет раскрыто перед выполнением комадны ″ssh″?

mky ★★★★★ ()
Ответ на: комментарий от znenyegvkby

В качестве ssh сервера на роутере установлен dropbear. Файл sshd_config отсутствует, в папке /user/local/root/.ssh лежит только authorized_keys. Там же создал файл sshd_config с одной строчкой «PermitUserEnvironment», без результата. ------------- В /usr/sbin/ лежит файл dropbearstart, в котором есть строки: PATH=/sbin:/usr/sbin:/bin:/usr/bin export PATH ------------- Команда ssh admin@192.168.1.1 «env | grep PATH» возвращает PATH=/usr/bin:/bin

sapper1982 ()
Ответ на: комментарий от sapper1982

файл sshd_config с одной строчкой «PermitUserEnvironment», без результата

Эта опция работает для OpenSSH (и нужно создавать environment для загрузки), я думал у вас она стоит, а у вас DropBear, в-принципе, вам просто нужно понять суть проблемы, и тогда вы и для своего DropBear это решите. Если вкратце, то:

Команда ssh admin@192.168.1.1 «env | grep PATH» возвращает PATH=/usr/bin:/bin

Если вы прочтете man ssh, то увидите там следующее предложение

If command is specified, it is executed on the remote host instead of a login shell.

То есть если вы задаете команду (ваш «env | grep PATH»), то, простыми словами, оболочка в вашем привычном понимании не загружается (и вместе с ней не загружаются и все файлы с настройками/переменными окружения (нужный вам PATH, допустим)/etc). Полноценной замены параметра PermitUserEnvironment для DropBear я найти не могу (то есть замены со стороны сервера, а не клиента), но зато из того же man'а ssh я вижу следующее

...
-t' Force pseudo-tty allocation. This can be used to execute arbitrary screen-based programs on a remote machine, which can be very useful, e.g. when implementing menu services. Multiple -t options force tty allocation, even if ssh has no local tty.
...
То есть, как я понял, вы можете использовать параметр -t для выделения псевдотерминала. Рекомендую начать с этого (сам, к сожалению, сейчас проверить не могу).

znenyegvkby ()
Ответ на: комментарий от znenyegvkby

Спасибо всем, решить проблему получилось следующим способом: 1. на роутере установил openssh «ipkg install openssh» 2. далее через веб-морду роутера (asus rt-n16, прошивка 1.9.2.7-rtn-r5066) отключил ssh сервер dropbear). 3. зашел на роутер через telnet и отредактировал появившийся конфиг openssh, добавил строку «PermitUserEnvironment yes») 4. После сохранения изменений и перезагрузки «flashfs save && flashfs commit && flashfs enable && pre-shutdown && reboot) смог наконец-то получить статистику командой „ssh admin@192.168.1.1 ifconfig“

sapper1982 ()
Ответ на: комментарий от znenyegvkby

:) общими усилиями, без подсказок сам бы давно плюнул на эту затею.

sapper1982 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.