我们有很多服务器和vhost,其中有些使用nignx,有些使用httpd或apache作为它们的域。我想编写一个ansible脚本,该脚本提取vhost用于其站点的web服务器的信息,问题是其中许多服务器都已安装了所有3台web服务器,但实际上只有一台用于运行该站点(其他服务器可能具有活动状态)。
我是说,我甚至不知道从哪里开始。一个简单的bash脚本示例很好,它可以准确地输出vhost的web服务器。
发布于 2019-07-25 10:20:10
问:"If a server has nginx and apache installed, how do I find out which one is used for the website?“
答:给一个“网站”,我们知道IP地址和端口。那么问题是:在www_ip主机和www_port上运行的守护进程是什么?
让我们使用lsof并打印列表中的第一项。下面的播放(例如,nginx正在监听端口8080)
- hosts: www_ip
vars:
www_port: 8080
tasks:
- shell: "lsof -i :{{ www_port }}|
grep LISTEN|
cut -d ' ' -f 1"
register: result
- debug:
msg: "{{ result.stdout_lines|first }}"给出
ok: [www_ip] => {
"msg": "nginx"
}备注
发布于 2019-07-25 09:10:48
检查正在使用它们的进程的端口80或443如何:
sudo netstat -ntlp | grep '0.0.0.0:80' | awk '{print $7}'至于443港口:
sudo netstat -ntlp | grep '0.0.0.0:443' | awk '{print $7}'输出将是其中之一:
xx/httpd # for apache
xx/nginx # for nginx并且可以编写一个ansible任务来运行此cmd。
https://stackoverflow.com/questions/57197324
复制相似问题