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

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

  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

обе не работают.

28
задан slhck
27.04.2023 7:16 Количество просмотров материала 3389
Распечатать страницу

3 ответа

лучшее решение-настроить 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
2
отвечен Bram 2023-04-28 15:04

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

0
отвечен Hamed JML 2023-04-28 17:21

не работает:

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

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

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

0
отвечен Antonis Christofides 2023-04-28 19:38

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх