Используйте команду sudo для скрипта SSH сервера


1

Я должен сделать следующие шаги на нескольких серверах:

  1. войти с моим именем пользователя
  2. введите sudo su -
  3. введите amCLI -l 32/1 | grep Firmware

Поэтому я хотел бы написать все это в одном сценарии, моя идея была:

#!bin/bash
for hostname in DPM-BZ0201 DPM-BZ0202
do
ssh -n vneudeck@$hostname "sudo su-; amCLI -l 32/1 | grep Firmware"
done

или же

#!bin/bash
for hostname in DPM-BZ0201 DPM-BZ0202
do
ssh -n vneudeck@$hostname "sudo amCLI -l 32/1 | grep Firmware"
done

Оба не работают, хотя.


возможный дубликат SSH: выполнить команду sudo
slhck

Ответы:


2

Лучшее решение - настроить sudo так, чтобы ваш пользователь мог запускаться /full/path/to/amCLIбез предоставления пароля.

Тогда вы можете просто

#!bin/bash
for hostname in DPM-BZ0201 DPM-BZ0202
do
    ssh -n vneudeck@$hostname sudo /full/path/to/amCLI -l 32/1 | grep Firmware
done

0

Может быть, если вы поставите vneudeck @ $ hostname в двойные кавычки, это поможет. И между су и нет места - надеюсь, это полезно


Двойные кавычки здесь не нужны.
Slhck

0

Первый не сработает:

sudo su -; amCLI -l 32/1 | grep Firmware

Это будет выполнено sudo su -, и когда это вернется (т.е. когда вы закончили обрабатывать команды как root и вышли), он выполнит amCLI. (Обратите внимание, что альтернативой sudo suявляется sudo -s, хотя sudo su -я думаю , что больше.)

Вторая версия может работать с некоторыми условиями: sudoне должен запрашивать пароль и amCLIдолжен быть в PATH (не путь root, который, вероятно, задается при вводе sudo su -, но ваш путь, потому что sudo использует ваш путь). Попробуйте указать полный путь amCLI, например, /usr/local/sbin/amCLIили что-то еще.


По соображениям безопасности вы всегда должны указывать полный путь при запуске под управлением sudoсценариев. В противном случае любой, кто может поместить файл с именем amCliгде-либо в ПУТЬ пользователя vneudeck(что может быть сравнительно легко), имеет доступ к корневым привилегиям.
DevSolar
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.