2014-09-02 2 views
0

У меня есть скрипт, который копирует файл, затем распаковывает и устанавливает его (агент-сервис) на несколько систем (IP-адреса считываются из файла system.txt). В сценарии я хотел запустить агент-сервис как пользовательский «тест». Однако после выполнения скрипта, когда я проверяю целевую систему, агент-агент отображается как работающий под именем «root». Что здесь может быть не так? Я не использую команду su в скрипте?su команда в сценарии оболочки

~]# ps -ef | grep agent-service 

    root  23511 15196 0 02:12 pts/3 00:00:00 agent-service 

Рукописные>

#!/bin/bash 
export AGENT=linux-5.8.1.tar.gz 

while read host; do 

scp $AGENT [email protected]$host:/opt 


ssh -n [email protected]$host 'cd /opt/linux; 
tar zxvf linux-5.8.1.tar.gz; 
mkdir /opt/hyperic; 
useradd -m test; 
chown -R test:test /opt/linux; 
su - test; 
/opt/linux/agent-service start' 

done < systems.txt 
+1

Что гласит: переключатель для тестирования пользователя, который не имеет ничего общего, заканчивается, и затем запустите его, как исходный пользователь. Если вы сохраните его в одной строке, он может работать ('su -c the-command'). Кстати: есть такие вещи, как «start-stop-daemon», которые заботятся о многих вещах, которые могут вам пригодиться. – Wrikken

ответ

4

su Используя, как вы делаете здесь нерестится новая оболочка, которая не имеет ничего общего, таким образом, выходит сразу.

Либо передать команду su:

su - test -c /opt/linux/agent-service start 

Или использовать sudo аналогичным образом:

sudo -u test /opt/linux/agent-service start 
+0

спасибо большое, что помогло. обновил сценарий, как показано ниже, и он сработал. тест su -c "/ opt/linux/agent-service start" – user3331975

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