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 # 任务管理器
安装 yum -y install wget wget www.baidu.com # 发送http请求,保存至'index.html'
- rz: 上传文件 # 从宿主机上传到虚拟机 注意不可以传空的txt文件 - sz:下载文件 # 从虚拟机传文件到宿主机
: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条左右
执行历史记录的话, !命令行号
https://www.cnblogs.com/passzhang/p/8552757.html
1.企业中,项目的发布流程
产品经理调研需求 ----》三方开会讨论(开发,产品,运维,测试) -----> 开发进行开发产品 ----> 测试流程 (黑盒和白盒测试) -----> 上线
传统的上线流程:
SVN 开发将代码压缩一下发给运维,运维拿到代码之后,然后将代码解压缩,部署到服务器上,启动服务
自动化运维的流程:
搞一个web的系统,勾选发布的机器,上传代码, 进行发布
上述系统需要知道服务器的基本信息(元信息)
2.监控系统
需要监控服务器的CPU使用率,磁盘大小(>90%,报警),内存使用率
上述系统需要知道服务器的基本信息
1.概念介绍
通过上面的例子,需要做一个基石项目,提供服务器的基础信息(服务器的磁盘,cpu, 内存等),这个基石项目叫做CMDB Configure Manage DataBase 中文叫 配置管理数据库,主要用来收集服务器的基础信息
2.架构图方案
参考:https://lupython.gitee.io/2018/05/05/CMDB%E4%BB%8B%E7%BB%8D/
问:如何获取服务器的信息?
答:执行对应的linux命令 (ip:ifconfig)
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客户端
缺点:速度慢
上述方案比较:
总结:
整个架构方案,分成3部分, 客户端采集,API数据分析,数据展示
同时实现这两套方案,好处是:将来好切换