CentOS, CMDB1 Linux命令补充(netstat,ps,kill,service,systemctl,top,wget,Irzsz,vim,磁盘使用情况,cpu情况,tree,history),linux常见的面试题, CMDB

Linux命令补充

网络相关常见命令 

1.hostname
hostname 没有选项,显示主机名字
hostname –f 显示完整的主机名和域名
hostname –i 显示当前机器的 ip 地址

2.ping

ping 将数据包发向用户指定地址。当包被接收,目标机器发送返回数据包
windows中的ping,只执行4次,linux中一直ping下去

3.查看IP信息

ifconfig

在6 下面可以使用  
查看用户网络配置。它显示当前网络设备配置

ip addr 

在6 和 7 下面都可以使用

3.1 清屏的命令

clear 或者 crtl+l

4.netstat   # centos7初始没有此命令,需要安装。yum install net-tools

netstat -natup    # 显示运行的服务,端口

5.ps

ps -aux 是列出当前服务器上所有的进程
|  : 管道符 , 将左边执行的命令结果传给右边进行操作
grep : 用来进行筛选过滤
ps -aux | grep mysql : 查看mysql所有的相关进程

6.kill

杀死某一个进程  kill 服务的进程号
kill -9 服务的进程号  -9:强制杀死
pkill  服务名 : 杀掉服务进程  pkill redis 

7.service

centos6的系统:

service命令能够将目录“/etc/init.d/”中有关网络服务或系统服务脚本程序以一种统一的格式执行,格式为:“service 脚本程序 选项”,常用选项有:status、stop、start、restart。service命令使用举例如下:

-  service 服务名 status : 查看某一个服务的状态  
-  service sshd status : 查看sshd服务的状态
- service 服务名 stop : 关闭某一个服务
  - service sshd stop : 关闭sshd服务
- service 服务名  start : 启动一个服务
  - service sshd start: 启动ssh的服务
- service 服务名  restart : 重新启动一个服务
  - service sshd restart: 重新启动ssh的服务

centos 7的系统:

systemctl  status 服务名
systemctl start 服务名
systemctl restart 服务名
systemctl stop 服务名

8.top  # 任务管理器

9.wget # 发送http请求

安装  yum -y install wget 

wget www.baidu.com    # 发送http请求,保存至'index.html'
0.lrzsz # 安装 yum install -y lrzsz
- rz: 上传文件    # 从宿主机上传到虚拟机  注意不可以传空的txt文件
- sz:下载文件    # 从虚拟机传文件到宿主机

1.vim的使用

安装:yum install vim*

:q                      退出
 
:q!                     强制退出
 
:wq                   保存并退出
 
:set number     显示行号
 
:set nonumber  隐藏行号
 
/apache            在文档中查找apache 按n跳到下一个,shift+n上一个
 
yyp                   复制光标所在行,并粘贴
 
h(左移一个字符←)、j(下一行↓)、k(上一行↑)、l(右移一个字符→)

2.查看磁盘的使用情况

df -h    # -h格式化

3.查看cpu的具体情况

cat /proc/cpuinfo

4.tree

yum install tree
查看当前目录下面的所有文件和文件夹

5.history

记录历史命令, 一般记录1000条左右
执行历史记录的话, !命令行号

linux常见的面试题

https://www.cnblogs.com/passzhang/p/8552757.html

传统运维和自动化运维的对比

1.企业中,项目的发布流程

产品经理调研需求 ----》三方开会讨论(开发,产品,运维,测试) -----> 开发进行开发产品  ----> 测试流程 (黑盒和白盒测试) -----> 上线

传统的上线流程:

SVN 开发将代码压缩一下发给运维,运维拿到代码之后,然后将代码解压缩,部署到服务器上,启动服务

好处:流程比较简单

坏处: 服务器多的话,部署就非常的慢,影响上线的进度

自动化运维的流程:

搞一个web的系统,勾选发布的机器,上传代码, 进行发布

上述系统需要知道服务器的基本信息(元信息)

2.监控系统

需要监控服务器的CPU使用率,磁盘大小(>90%,报警),内存使用率

上述系统需要知道服务器的基本信息

 

CMDB

 1.概念介绍

通过上面的例子,需要做一个基石项目,提供服务器的基础信息(服务器的磁盘,cpu, 内存等),这个基石项目叫做CMDB  Configure Manage DataBase   中文叫 配置管理数据库,主要用来收集服务器的基础信息

2.架构图方案

参考:https://lupython.gitee.io/2018/05/05/CMDB%E4%BB%8B%E7%BB%8D/

问:如何获取服务器的信息?
答:执行对应的linux命令   (ip:ifconfig)

问:如何使用Python代码来执行linux的命令?

答:subprocess模块来执行linux命令

问:为啥post中没有收到数据,而body中有

答:django根据你http协议的头信息来判断, 如果 content-type: application/form-url-encode的话,django会将body中的数据付给post。如果 content-type: application/json的话,django不会将body中的数据付给post

1 Agent方案

 将待采集的服务器看成一个agent,然后再服务器上使用python的subprocess模块执行linux相关的命令,然后分析得到的结果,将分析得到的结果通过requests模块发送给API,API获取到数据之后,进行二次比对数据,最后将比对的结果存入到数据库中,最后django起一个webserver从数据库中将数据获取出来,供用户查看

 test.py (电脑模拟虚拟机客户端程序)

#### 1.agent方案
import subprocess,json

res = subprocess.getoutput('ipconfig')
print(res)  # 打印ip配置

info = res[60:70]
print('*'*10)
print('ip配置',info)  # 打印ip配置

import requests

requests.post('http://127.0.0.1:8000/api/',data=json.dumps(info))

django项目

# url.py
from django.conf.urls import url
from django.contrib import admin
from api import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^api/', views.asset),
]

# views.py
from django.shortcuts import render,HttpResponse

# Create your views here.
def asset(request):
    print(request.body)
    return HttpResponse('ok')

有点:速度快

缺点:需要为每台服务器部署一个Agent程序

2 ssh类方案 (基于Paramiko模块)

 在中控机服务器上安装一个模块叫paramiko模块,通过这个模块登录到带采集的服务器上,然后执行相关的linux命令,最后返回执行的结果,将分析得到的结果通过requests模块发送给API,API获取到数据之后,进行二次比对数据,最后将比对的结果存入到数据库中,最后django起一个webserver从数据库中将数据获取出来,供用户查看

 安装 pip install paramiko

### 2 ssh类
import paramiko

# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='10.0.0.200', port=22, username='root', password='admin123')

# 执行命令
stdin, stdout, stderr = ssh.exec_command('ifconfig')
# 获取命令结果
result = stdout.read()
print(result)
# 关闭连接
ssh.close()

优点:无Agent客户端

缺点:速度慢

 

上述方案比较:

  • 第一套方案的优点是: 不需要额外的增加中控机。 缺点:每新增一台服务器,就需要额外部署agent脚本。使用场景是:服务器多的情况 (1000台以上)

  • 第二套方案的优点是:不需要额外的部署脚本。缺点:速度比较慢。使用场景是:服务器少 (1000台往下)

 

总结:

整个架构方案,分成3部分, 客户端采集,API数据分析,数据展示

同时实现这两套方案,好处是:将来好切换

原文地址:https://www.cnblogs.com/ludingchao/p/12568767.html