• 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数据分析,数据展示

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

  • 相关阅读:
    java编程思想概括(第二章)一切都是对象
    java编程思想概括(第六章)复用类
    .net程序在无.net环境下运行
    一个让人哭笑不得的触发器
    iReaper for android
    博易博客删除垃圾评论
    解决博易2.0版分页问题
    允许更新此预编译站点的作用
    java包的命名规则技巧
    简易拨号器iCall
  • 原文地址:https://www.cnblogs.com/ludingchao/p/12568767.html
Copyright © 2020-2023  润新知