Как войти в терминал Linux как пользователь ROOT с помощью скрипта ruby

Я хочу запустить скрипт на удаленном сервере, используя SSH.

Я написал весь код, который работает правильно, используя системную команду.

Чтобы запустить мой код на удаленном сервере, мне нужны некоторые пакеты, которые мне нужно установить на удаленном сервере.

Для этого мне нужно войти в удаленный терминал как пользователь ROOT. Когда я пытаюсь использовать сценарий Ruby, я получаю что-то вроде следующего

[not_root_user@remote_server]$ su
Password: 

Мне нужна какая-то команда, с помощью которой я могу войти на удаленный сервер примерно так:

[not_root_user@remote_server]$ su -p ******
[root@remote_server]# 

Есть ли какая-нибудь команда linux, которая принимает в ней пароль?


person Salil    schedule 19.04.2012    source источник


Ответы (2)


Итак, вы хотите, чтобы ваш скрипт действовал как root?

На самом деле это не рекомендуется, но вы можете использовать expect: http://en.wikipedia.org/wiki/Expect< /а>

В вики есть пошаговое руководство для базового автоматизированного сеанса telnet, которое вы можете адаптировать к своим потребностям.

Однако у вас будет пароль root в виде обычного текста, что может быть проблемой безопасности. Если вы пойдете по этому пути, я определенно удалю все копии этого скрипта из вселенной, как только этот пакет будет установлен.

Но если вы разрешаете прямой вход в систему root, у вас уже есть небольшая проблема с безопасностью. Sudo работает из коробки во всех современных дистрибутивах Linux, которые я использовал, я бы придерживался этого, если это возможно.

Другой вариант, столь же безвкусный, — настроить вход в систему root-to-root без пароля через ssh.

person TaoJoannes    schedule 19.04.2012
comment
Я не уверен, что вы могли бы использовать expect для сценария su - я полагаю, что он использует некоторую магию, чтобы убедиться, что он получает ввод от tty, а не stdin. - person cha0site; 19.04.2012
comment
вы бы запустили сценарий ожидания в локальной системе, я уверен, что делал это в лаборатории, по крайней мере, 5 или 6 лет назад, лол. - person TaoJoannes; 19.04.2012
comment
Да, но спрашивающий упоминает об использовании вызова system для запуска команд в удаленной системе, поэтому я предполагаю, что его сценарий работает там. - person cha0site; 19.04.2012
comment
в любом случае это работает. если он запустит сценарий ожидания из локальной системы и целевой сценарий в удаленной системе, он запустится, или если он запустит сценарий ожидания в удаленной системе, он запустится. Я только что провел тест на Linux HFC-2600 3.0.0-12-generic #20-Ubuntu SMP Пт, 7 октября, 14:50:42 UTC 2011 i686 i686 i386 GNU/Linux, и он работает, как и ожидалось. Вводит вас в оболочку входа в систему, запускает команды, завершает работу. - person TaoJoannes; 19.04.2012

Sudo был бы моим первым вариантом обойти это. Хотя и не лучший вариант.

Вы также можете использовать аутентификацию по ключу с SSH, и если аутентификация по паролю отключена, пароль вводить не нужно.

person Vegan    schedule 19.04.2012