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數據分析,數據展現

同時實現這兩套方案,好處是:未來好切換

相關文章
相關標籤/搜索