当我查看 rpm 包和 ssh 的 grep 时,我得到以下信息,但是我如何以编程方式知道 ssh 来自包 openssh?
[root@vm ~]# rpm -qa | grep ssh
openssh-clients-7.4p1-21.el7.x86_64
libssh2-1.8.0-3.el7.x86_64
sshpass-1.06-2.el7.x86_64
openssh-7.4p1-21.el7.x86_64
openssh-server-7.4p1-21.el7.x86_64
如果运行以下命令,我看到它是 OpenSSH
[root@vm ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
但是对于 ssh 守护进程,如果我运行 version 命令,它会因为未知选项
V
而返回非零退出状态[root@vm ~]# sshd -V
unknown option -- V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
usage: sshd [-46DdeiqTt] [-C connection_spec] [-c host_cert_file]
[-E log_file] [-f config_file] [-g login_grace_time]
[-h host_key_file] [-o option] [-p port] [-u len]
我想自动化查找给定进程(pid)或服务或守护程序的软件版本的过程。什么是优雅的方式?
最佳答案
如果你有路径:
$ rpm -qf /usr/sbin/sshd
如果你有 $PID:
rpm -qf $(ps af | grep $PID | awk '{print $5}')
关于linux - 以编程方式查找给定进程/pid的软件包和版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61811574/