Como descobrir em qual porta mongo está?

4

Eu sei que a porta mongo padrão é 27017 e posso me conectar a essa instância nessa porta.

Mas eu tentei descobrir isso por outros meios.

Descobri que mongo está sendo executado por ps aux | grep mongo com ele. Posso ver /usr/bin/mongod --config /etc/mongod.conf

Em /etc/mongod.conf port é 27018

Netstat netstat -tulnp | grep 2701 me dá

tcp        0      0 0.0.0.0:27017           0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:27018           0.0.0.0:*               LISTEN      -

Eu não sei porque não vejo o nome do processo. Existe alguma outra maneira de ter certeza de que o mongo funciona em 27017 ?

    
por Viacheslav Kondratiuk 10.11.2015 / 20:02

4 respostas

6

lsof -i | grep mongo

Isso listará todos os arquivos abertos ( lsof ) que estão ouvindo "endereços da Internet" ( -i ). A saída disso é canalizada para grep , que é usado para filtrar por texto. Neste caso, procuramos todos os arquivos abertos, relacionados à Internet, que correspondam à palavra mongo .

    
por earthmeLon 10.11.2015 / 20:45
2

Você pode usar nmap para varrer as portas no intervalo de 1 a 65535 com -p- flag

Por exemplo,

Downloads:$ nmap -p- localhost

Starting Nmap 6.40 ( http://nmap.org ) at 2015-11-10 12:07 MST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00036s latency).
Not shown: 65529 closed ports
PORT      STATE SERVICE
21/tcp    open  ftp
22/tcp    open  ssh
25/tcp    open  smtp
631/tcp   open  ipp
37818/tcp open  unknown
46400/tcp open  unknown
    
por Sergiy Kolodyazhnyy 10.11.2015 / 20:08
0

No shell do sistema, você pode usar lsof ou netstat -an como mencionou para ver o que um processo está fazendo em termos de portas abertas. Como alternativa, você pode executar o comando db.getCmdLineOpts() do mongo shell. Essa saída fornecerá todos os argumentos passados na linha de comando (argv) para o servidor e os argumentos do arquivo de configuração (analisado) e você poderá deduzir as portas mongod que estão escutando com base nessas informações. Aqui está um exemplo:

{
        "argv" : [
               "/usr/bin/mongod",
               "--config",
               "/etc/mongod.conf",
               "--fork"
        ],
        "parsed" : {
               "bind_ip" : "127.0.0.1",
               "config" : "/etc/mongodb/mongodb.conf",
               "dbpath" : "/srv/mongodb",
               "fork" : true,
               "logappend" : "true",
               "logpath" : "/var/log/mongodb/mongod.log",
               "quiet" : "true",
               "port" : 30001
        },
        "ok" : 1
}

Se você não tiver passado opções de porta específicas como a acima, o mongod estará atendendo 27017 (normal) e 28017 ( link ) por padrão.

Nota: existem alguns outros argumentos que podem alterar as portas sem serem explícitas, veja aqui:

link

Eu mencionei isso porque sua saída lsof também mostra a porta 27018 aberta, que é o padrão se você tiver a opção shardsvr definida. Assim, sua saída sugere que você pode ter um mongos em 27017 e um (caco) mongod em 27018. Se você se conectar a cada um deles e executar o getCmdLineOpts() , será possível descobrir como as coisas estão configuradas. / p>     

por Adam C 30.11.2015 / 12:36
0

Na verdade, você pode usar:

lsof -i -ac mongod

lsof pode fazer mais do que apenas procurar conexões de rede. o "-a" é para "E", então terá que corresponder a ambos os critérios. Caso contrário, o padrão é "Or". O "-c" é para o comando. Você também pode especificar o nome do usuário ou PID ou muitas outras coisas.

    
por The Letter M 06.05.2016 / 09:08

Tags