2015-08-10 2 views
0

У меня есть вопрос, связанный с подключением через ssh с функцией «system()» в perl.вызов «ssh» в системной функции в perl

В моем скрипте perl я хочу подключиться через ssh к другому ip, запустить команду и вернуть ее значение или перенаправить результат результата в файл.

system ("su - anotherUSer ; ssh [email protected]"); 

(я изменить свое имя, так что я не запрошен пароль)

, когда я выполнить это только строки она меняет имя пользователя правильно, но не подключается через SSH. Другими словами, вторая часть системного вызова не выполняется (или выполняется, но не отражается на терминале).

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

Когда я запускаю команду «выход», чтобы выйти из системы моего пользователя anotherUser ошибка возникает:

(SSH: «имя пользователя» «IP»:. Имя узла или службы имя не известно)

Я также испытанный он ускользает от «@» и «.»

system ("su - anotherUSer ; ssh someUsername\@number\.number\.number\.number"); 

в этом случае, когда я запустить команду «выход», он askes для пароля (Помните, что я swiched пользователей так, что пароль может быть опущен).

Надеюсь, вы понимаете мою проблему.

Спасибо !!!

+0

Попробуйте 'ssh someUsername @ someIpAddress" su - anotherUser ". Затем вы измените имя пользователя на другом компьютере после входа в систему с помощью ssh .. –

ответ

4

Вы говорите неправильной оболочке, чтобы выполнить ssh.

Вы создаете оболочку и просите ее выполнить две команды: su и ssh. Сначала он порождает su, который запускает другую оболочку. Вы не сказали этой новой оболочке ничего делать, поэтому она ждет ввода. Когда он, наконец, выйдет, первая оболочка выполняет вторую команду: ssh.

Использование:

system("su -c 'ssh [email protected]' - anotherUSer"); 

Но это противно! Почему бы просто не настроить ключ для текущего пользователя, а не стать anottherUSer, чтобы использовать их?

Смежные вопросы