我需要从远程计算机执行一些docker命令。
我正在使用java ssh库连接到我需要执行docker命令的机器,然后尝试执行命令。
实际的docker命令是:
docker exec -it idaas_webtier_1 /bin/bash
_tadm1="${OTD_HOME}/bin/tadm"
_tadm2="--user=${OTD_ADMIN_USER} --password-file=${OTD_ADMIN_PWD} --host=${HOSTNAME} --port=${OTD_ADMIN_PORT} --no-prompt --accept-cert"
$_tadm1 pull-config $_tadm2 --config=${OTD_CONFIG_NAME} ${HOSTNAME}
$_tadm1 create-origin-server-pool $_tadm2 --type=http --config=${OTD_CONFIG_NAME} --origin-server=server.us.oracle.com:7001 qaverify-server-pool
$_tadm1 set-health-check-prop $_tadm2 --config=${OTD_CONFIG_NAME} --origin-server-pool=qaverify-server-pool request-method=GET request-uri=/
$_tadm1 create-route $_tadm2 --config=${OTD_CONFIG_NAME} --vs=${OTD_CONFIG_NAME} --origin-server-pool=qaverify-server-pool --condition="\$uri=~\"/testApp.*\"" qaverify-route
$_tadm1 deploy-config $_tadm2 --restart ${OTD_CONFIG_NAME}
exit
远程尝试时,我添加了变量的实际值并将其放入shell脚本并执行sh脚本,但它只执行第一行 脚本如下
docker exec -it idaas_webtier_1 /bin/bash
_tadm1=/scratch/oracle/otd/bin/tadm
_tadm2="--user=admin --password-file=/scratch/oracle/otd/password-file --host=admin-server.cloudgate.dev.oraclecloud.local --port=8989 --no-prompt --accept-cert"
$_tadm1 pull-config $_tadm2 --config=idcs-config admin-server.cloudgate.dev.oraclecloud.local
$_tadm1 create-origin-server-pool $_tadm2 --type=http --config=idcs-config --origin-server=adc6260266.us.oracle.com:7001 qaverify-server-pool
$_tadm1 set-health-check-prop $_tadm2 --config=idcs-config --origin-server-pool=qaverify-server-pool request-method=GET request-uri=/
$_tadm1 create-route $_tadm2 --config=idcs-config --vs=idcs-config --origin-server-pool=qaverify-server-pool --condition="\$uri=~\"/testApp.*\"" qaverify-route
$_tadm1 deploy-config $_tadm2 --restart idcs-config
exit
它只执行第一行,而不执行其余行。
如果我将'|'
添加到命令中:
docker exec -it idaas_webtier_1 /bin/bash | _tadm1=/scratch/oracle/otd/bin/tadm
它说:
_tadm1 = / scratch / oracle / otd / bin / tadm:找不到命令。
任何关于此的指针都会有所帮助。
答案 0 :(得分:0)
U可以编写shell脚本并直接运行脚本而不是访问bash终端。
例如。,
docker exec -it idaas_webtier_1 tadm.sh