Os serviços rodando no Debian ou em qualquer caixa GNU / Linux, não possuem necessariamente uma versão. Em vez disso, todos os daemons que fornecem serviços possuem algum tipo de string de versão e fazem parte de algum pacote. O primeiro é bastante difícil de descobrir, já que nem todos os daemons, embora a maioria deles, respondem a opções de linha de comando óbvias como --version
ou -v
da maneira que se poderia esperar. O último é um pouco mais fácil: podemos apenas pegar uma lista de todos os scripts init iniciando os vários daemons e listar as informações do pacote para esses arquivos.
Isso não é exatamente o que você pediu, mas chega bem perto. Pelo menos você saberá quais versões de pacotes fornecem quais serviços. O exemplo a seguir produzirá uma listagem de todos os pacotes que fornecem um script-init ou -scripts no diretório /etc/init.d/
.
#!/bin/sh
for pkg in $(for file in /etc/init.d/* ; do \
dpkg -S $file | awk -F: '{ print $1 }' ; \
done | sort | uniq) ; do
echo "$pkg: 'dpkg-query -W -f='${Version}' $pkg'"
done
Isso levará algum tempo para passar, o dpkg não é a coisa mais rápida do planeta e é executado várias vezes por lá. Também haverá algumas coisas listadas por service --status-all
, que não são exibidas pelo exemplo acima. Isso ocorre simplesmente porque estamos consultando cada pacote apenas uma vez (devido a uniq
): alguns pacotes fornecem vários scripts de inicialização e isso é refletido na saída de service --status-all
.