【发布时间】:2019-01-28 02:36:47
【问题描述】:
我正在尝试将以下一系列可以正常工作的命令自动化到 BASH 脚本中:
kubectl exec -it mongo-pod -- bash
mongo DBNAME
db.auth("theUser", "thePw")
db.theCollection.find()
我使用的脚本如下:
#!/bin/bash
kubectl exec -it mongo-pod -- bash -c "mongo DBNAME && /
db.auth("theUser", "thePw") && /
db.theCollection.find()"
我尝试了以下方法: Executing multiple commands( or from a shell script) in a kubernetes pod 但是在第一次使用 & 或 && 之后添加的任何命令都不会执行。例如,仅使用“mongo DBNAME”正确打开提示符并将其设置为正确的数据库,但使用 && 添加任何其他命令会导致所有命令失败并显示以下内容:
bash: -c line 0: 意外标记“theUser”附近的语法错误
【问题讨论】:
-
db.auth(...和db.theCollection...命令是 mongo 命令吗?在编写脚本时,在成功退出上一个命令后,它们正在由 bash 执行(这就是&&所做的) -
是的,这些是 mongo 命令,看这个问题stackoverflow.com/questions/4837673/…
-
我会直接调用 mongo shell
kubectl exec -it mongo-pod -- mongo "<COMMANDS>"然后查看 here -
@Will Barnwell 我查看了stackoverflow.com/questions/4837673/… 中的解决方案,但无法让这些解决方案中的任何一个与“kubectl exec -it mongo-pod -- bash -c
" 过去的第一个命令。 -
@stacksonstacks 当我使用“kubectl exec -it mongo-pod -- mongo”时,我连接到 pod 中的 mongodb(类似于我使用 -- bash 选项时),但我不确定在哪里根据您链接的 MongoDB 手动脚本描述从那里开始。具体来说,我已经连接到 db,但是没有 javascript 变量 db 来执行命令,而无需通过 new Mongo(
).getDB("theDB") 之类的东西重新连接。
标签: mongodb bash kubernetes