CentOS, CMDB1 Linux命令补充(netstat,ps,kill,service,systemctl,top,wget,Irzsz,vim,磁盘使用状况,cpu状况,tree,histo

Linux命令补充html

网络相关常见命令 python

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

2.ping linux

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

3.查看IP信息 web

ifconfig面试

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

ip addr redis

在6 和 7 下面均可以使用

3.1 清屏的命令sql

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常见的面试题

http://www.javashuo.com/article/p-qsftjfwk-md.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数据分析,数据展现

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

相关文章
相关标签/搜索