Открыть оболочку внутри bash sh скрипта - PullRequest
1 голос
/ 10 июля 2020

Меня просят автоматизировать задачу по созданию резервной копии. Чтобы сделать это, одним из шагов является вход в инструмент Amster, который сам входит в свою собственную оболочку, где я затем выполняю другие команды, пока не выйду из нее. Чтобы успешно войти в Амстер, мне нужно предоставить учетные данные, оказавшись внутри Амстер, мне также нужно выполнить команду подключения, предоставляющую учетные данные, а затем выполнить больше команд.

Есть ли способ выполнить sh все это из один скрипт sh? Или невозможно развернуть оболочку внутри оболочки?

Это будет начало сценария sh, хотя после него будут добавлены дополнительные команды, это иллюстрирует то, что я пытаюсь задать. Итак, после строки ./amster он входит в свою собственную оболочку, где должна выполняться команда подключения и запрашивать учетные данные (что является частью проблемы, которую я пытаюсь решить, может быть, введите учетные данные в строке сценария?)

[Access-Manager]:/mnt/forgerock/amster> tail autoback.sh
cd /mnt/forgerock/amste
export JAVA_HOME=/usr/
./amster
connect -i http://xxxxxxxx.com:8080/auth

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

[Access-Manager]:/mnt/forgerock/amster> ./autoback.sh
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass (file:/mnt/forgerock/amster/amster-6.5.2.3.jar) to method java.lang.Object.finalize()
WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.reflection.CachedClass
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Amster OpenAM Shell (6.5.2.3 build 4ed586d624, JVM: 11.0.7)
Type ':help' or ':h' for help.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
am>

Так что это просто оставляет меня в приглашении amster, готовый к следующей команде. Здесь я не знаю, как заставить его выполнить следующую команду.

Любые идеи ??

Если вам нужна дополнительная информация, дайте мне знать.

Спасибо .

Ответы [ 2 ]

1 голос
/ 10 июля 2020

Если под автоматом вы подразумеваете полностью без вмешательства человека, ie. Чтобы ввести учетные данные, вы можете go с помощью [ожидать], как указано в комментарии, или посмотреть, разрешает ли amster передавать учетные данные в командной строке. Если второй вариант, вы можете попробовать heredo c, что-то вроде:

./amster<<EOF
connect -i http://auth-sb.company.com:8080/auth
...
EOF

В качестве примера, который я использую:

sqlplus -s /nolog<<SQL
connect user/passwd@db
select 'name'
from dual;
exit;
SQL

У меня есть пользователь и пароль, полученные из другой файл в переменные, поэтому эти детали не требуются в скрипте

Надеюсь, это даст вам некоторые идеи :)

0 голосов
/ 10 июля 2020

Общий совет при работе с amster: используйте сценарий оболочки для создания файлов amster, а затем запускайте их из своего sh сценария, он должен выглядеть следующим образом:

echo -e "AM_URL_HTTPS=System.getProperty(\"AM_URL_HTTPS\")\nAM_CONFIG_DIR=System.getProperty(\"AM_CONFIG_DIR\")\nAMADMIN_PWD=System.getProperty(\"AMADMIN_PWD\")\nCOOKIE_DOMAIN=System.getProperty(\"COOKIE_DOMAIN\")\n\ninstall-openam --serverUrl AM_URL_HTTPS --adminPwd AMADMIN_PWD --acceptLicense --cookieDomain COOKIE_DOMAIN --cfgDir AM_CONFIG_DIR\n:exit " > /opt/am/asmter_scripts/install-am.amster

chmod +x /opt/openam/amster_scripts/install-am.amster 

/opt/openam/amster/amster -D javax.net.ssl.trustStore=$JAVA_TRUSTSTORE -D javax.net.ssl.trustStoreType=jks /opt/openam/amster_scripts/install-am.amster -D AM_URL_HTTPS=${AM_URL_HTTPS} -D AM_CONFIG_DIR=${AM_CONFIG_DIR} -D AMADMIN_PWD=${AMADMIN_PWD} -D COOKIE_DOMAIN=${COOKIE_DOMAIN} 

Этот сценарий сгенерирует install.amster, затем запустите его из своего sh скрипта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...