I will preface by saying that I am a novice in both Python and MongoDB.
I am developing a Python script that connects to a Linux Server with an instance of MongoDB and retrieves MongoDB's configuration information. To do this, I have been using Pymongo. For example, here is what I have used to retrieve the "authorization" parameter.
from pymongo import MongoClient
db = MongoClient(dbhost, int(dbport))
db['admin'].authenticate(dbuser,dbpass)
output = db['admin'].command("getCmdLineOpts")
This is equivalent to running the following command in the mongo shell on the server itself.
db.adminCommand("getCmdLineOpts")
The output looks something like this:
{
        "argv" : [
                "/usr/bin/mongod",
                "-f",
                "/etc/mongod.conf"
        ],
        "parsed" : {
                "auditLog" : {
                        "destination" : "file",
                        "filter" : "{ atype: { $in: [ \"createCollection\", \"dropCollection\" ] } }",
                        "format" : "JSON",
                        "path" : "/var/log/mongodb/auditlog.json"
                },
                "config" : "/etc/mongod.conf",
                "net" : {
                        "port" : 27017
                },
                "processManagement" : {
                        "fork" : true,
                        "pidFilePath" : "/var/run/mongodb/mongod.pid",
                        "timeZoneInfo" : "/usr/share/zoneinfo"
                },
                "security" : {
                        "authorization" : "enabled",
                        "clusterAuthMode" : "keyFile",
                        "javascriptEnabled" : false,
                        "keyFile" : "/var/lib/mongo/keyfile"
                },
                "setParameter" : {
                        "enableLocalhostAuthBypass" : "false"
                },
                "storage" : {
                        "dbPath" : "/var/lib/mongo",
                        "journal" : {
                                "enabled" : true
                        }
                },
                "systemLog" : {
                        "destination" : "file",
                        "logAppend" : true,
                        "path" : "/var/log/mongodb/mongod.log",
                        "quiet" : false
                }
        },
        "ok" : 1
}
I have then been able to parse out the parameter I need. For example, to get the audit Log path:
auditLogPath = output['parsed']['auditLog']['path']
which is equivalent to running this in the mongo shell
db.adminCommand("getCmdLineOpts").parsed.auditLog.path
This code works fine, but I am stuck trying to find an equivalent PyMongo command for the Mongo shell native methods. By native methods, this is what I mean https://docs.mongodb.com/manual/reference/method/js-native/.
Specifically, I am trying to read the mongod.service file and report on the parameters in the file. In the mongo shell I can run the following command and receive the contents of the file at that location.
cat("/usr/lib/systemd/system/mongod.service")
I am wondering if there is a way to run these native methods (such as ls or cat), in Pymongo, using some similar structure to
db.command(<commandName>)
I appreciate any help!
 
    