linux命令与公私钥
昨日内容回顾
etc目录
配置相关
/etc/profile
环境变量文件
/etc/motd
开机欢迎界面
usr目录
程序相关
四种安装软件的方式
1.yum安装 自动解决依赖性问题
2.rap安装 不会自动解决依赖性问题 主要用于查看
3.编译安装 类似于windows中自定义安装程序
4.二进制包 就是一个程序文件打开即用
var目录
日志相关
服务器运行相关的日志以及用户登录相关的日志
ps:针对日志文件的优化处理
proc目录
硬件软件详细信息 cpu 内存 硬盘
ps:服务器资产管理系统
优化相关
系统优化
远程仓库的更换(yum仓库 epel仓库)
安全优化
selinux默认情况下需要关闭 因为会影响管理员的操作
防火墙 firewalld
systemctl status 服务名
systemctl stop 服务名
systemctl disable 服务名
上传下载
1.直接下载工具lrzsz
2.使用xshell提供的拖拽方式
"""
more\less
head\tail
linux三剑客
grep
sed
awk
"""
别名功能
我们学习的很多目录其实都是缩写的形式(别名)
别名相关的关键字>>>:alias
文件属性信息
文件类型
文件索引
用户与用户组
文件权限 4 2 1 0
文件操作命令
find查找文件
tar压缩相关
tar -zcvf 打包压缩
tar -zxvf 解压缩
今日内容概要
文件相关信息
时间相关操作
crontab定时任务
paramiko模块
1.公钥私钥
2.模块代码
3.代码封装
今日内容详细
文件相关信息
# 查看普通⽂件⼤⼩⽅法
[root@jason /tmp]# ls -lh /etc/services
# 查看⽬录⽂件⼤⼩⽅法
du 显示⽬录中的数据真实占⽤磁盘空间⼤⼩
du -sh /etc/
-s 将⽬录下⾯的数据信息⼤⼩进⾏统计
-h 以⼈类可读⽅式显示
# 企业案例: 磁盘空间不够使⽤了删除⽐较⼤的⽂件
⽂件索引属性信息
01. 确认磁盘空间是否不够⽤了
df -h
02. 确认⽐较⼤的⽂件数据信息
du -sh /usr/*
03. 没有⽤的⽂件(检查⼤⼩会不会有变化)
⽂件⼤⼩产⽣变化的⽂件如何处理:备份 清空⽂件中的数据>⽂件信息
⽂件⼤⼩不会产⽣变化的⽂件:备份 直接进⾏删除
04. 进⾏磁盘空间利⽤率确认
文件索引信息
inode(index node)
概念说明:书⽬录 索引指向信息 指向数据真实存储在磁盘的位置
# block
概念说明: ⽤于真实存储数据信息
如何查看block信息:
[root@jason /tmp]# ls -l /etc/hosts
block默认⼤⼩4k 可以调整, 但建议⼀定要在格式化分区时调整
# 问题: block是调整⼤⼀些10M,还是调整⼩⼀些10k
情况⼀: 存储数据量⽐较⼤的时候
正确答案: 是选择⼤的block更好
可以减少block消耗, 节省磁盘IO
情况⼆: 存储数据量⽐较⼩的时候
正确答案: 选择⼩的block会更好
链接信息
可以节省磁盘空间, 可以让更多数据进⾏存储
链接信息
硬链接:直接指向硬盘中真正的数据所在位置
硬链接各自不影响数据的访问
软链接:相当于是windows中的快捷方式
软链接的出处一旦删除所有软连接都会失效
# 硬链接
概念说明:
磁盘(超市--数据) 有⻔进⼊超市 cat /etc/hosts
多⻔进⼊超市 cat
/oldboy/hosts
只能对⽂件做硬链接不能对⽬录做硬链接
作⽤说明:
01. 可以⽤于查看数据信息
02. 可以⽤于作为备份
03. 当所有硬都被删除, 等价于数据将会被删除
区别说明:
01. 对于源⽂件关注程度
源⽂件删除, 不会对硬链接⽂件产⽣影响
02. 对于链接⽂件关注程度
不会有影响, 对于源⽂件硬链接数会减少
# 软链接
概念说明:
创建⼀个⽂件或者⽬录的快捷⽅式
作⽤说明:
01. 使复杂路径操作更加⽅便
02. 使不同软件程序版本调⽤更加⽅便
区别说明:
01. 对于源⽂件关注程度
源⽂件被删除, 会影响软链接⽂件
系统时间
02. 对于链接⽂件关注程度
毫⽆影响
"""详细操作"""
1.硬链接
ln /etc/hosts /oldboy/hard_link_hosts.txt
cat /etc/hosts
cat /oldboy/hard_link_hosts.txt
echo oldboyinfo >> /etc/hosts
cat /etc/hosts
cat /oldboy/hard_link_hosts.txt
2.软连接
ln -s /etc/sysconfig/network-scripts/ifcfg-eth0
/oldboy/soft_link_eth0
系统时间
1.电脑时间如何实现实时同步
电池 电容 网络请求
2.系统时间如何查看
date
# 按照⾃定义需求, 显示时间信息
date +年-⽉-⽇ ⼩时:分钟:秒
date +%y-%m-%d # date +%F
date +"%y-%m-%d %H:%M:%S"
# 显示过去的时间信息 显示未来的时间信息
显示过去的时间
date +%F -d "-3 day"/date +%F -d "-3day"
date +%F -d "+3 day ago"
date +%F -d "-3 year"
企业案例
定时任务
显示未来的时间
date +%F -d "+3 day"/date +%F -d "+3day"
# 设置系统时间⽅法
date -s "2022-11-11 11:11:11"
'''时间同步服务centos6为ntp centos7位chrony'''
服务器集群时间同步策略
回想电影里面飞虎队行动之前对表的操作
以服务器集群中某一台计算机作为时间参考
机器克隆
1.链接克隆与完整克隆的区别
2.克隆出来的机器一定要修改ip地址
定时任务
'''三种实现⽅式'''
定时任务软件:cronie
rpm -qa cronie
定时任务软件:atd
定时任务只执⾏⼀次(淘汰)
定时任务软件:anacron
只适合⾮24⼩时运⾏的服务器(淘汰)
crontab命令
paramiko模块
功能:通过python代码连接服务器并执行相关操作
并且支持用户名密码连接和公钥私钥连接
pip install paramiko
基本使用(用户名密码登录)
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='123')
# 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
"""
stdin 支持传额外的命令
stdout 命令正确的执行结果
stderr 命令错误的执行结果
"""
# 获取命令结果 还可以利用stdin继续传值 eg:-y确认
result = stdout.read()
print(result.decode('utf8'))
# 关闭连接
ssh.close()
公钥私钥
主要的目的是为了避免使用用户名密码的时候信息泄露造成安全性问题
简单的理解
1.每台计算机都可以拥有自己的公钥和私钥
2.你只需要将公钥交给别人 以后通过比对私钥就可以证明你的身份
详细的理解
鲍勃的公钥私钥
如何产生公钥私钥
mac电脑>>>:终端可以直接产生并发送给服务端
windows电脑>>>:只支持产生不支持发送(可以利用一些第三方软件加强)
git软件
桌面空白区域鼠标右键即可查看是否安装成功
git bash here
"""
1.生成
ssh-keygen -t rsa 连续按三下回车即可
2.拷贝公钥到远程服务器
ssh-copy-id -i 公钥文件绝对路径 用户名@服务器ip地址
"""
# 公钥和私钥(先讲公钥保存到服务器上)
import paramiko
# 读取本地私钥
private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')
# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='123.206.16.61', port=22, username='root', pkey=private_key)
# 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 获取命令结果
result = stdout.read()
print(result.decode('utf-8'))
# 关闭连接
ssh.close()
paramiko其他操作
import paramiko
# 用户名和密码
transport = paramiko.Transport(('123.206.16.61', 22))
transport.connect(username='root', password='123')
sftp = paramiko.SFTPClient.from_transport(transport)
# 上传文件
sftp.put("本地文件路径", '远程服务器路径') # 注意上传文件到远程某个文件下 文件必须存在
# 下载文件
sftp.get('远程服务器文件路径', '本地文件路径') # 将远程文件下载到本地并重新命令
transport.close()
# 公钥和私钥
import paramiko
private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')
transport = paramiko.Transport(('hostname', 22))
transport.connect(username='jason', pkey=private_key)
sftp = paramiko.SFTPClient.from_transport(transport)
# 将location.py 上传至服务器 /tmp/test.py
sftp.put('/tmp/location.py', '/tmp/test.py')
# 将remove_path 下载到本地 local_path
sftp.get('remove_path', 'local_path')
transport.close()
代码封装
# 以下代码不用死记硬背 知道原理会用即可
import paramiko
class SSHProxy(object):
def __init__(self, hostname, port, username, password):
self.hostname = hostname
self.port = port
self.username = username
self.password = password
self.transport = None
def open(self): # 给对象赋值一个上传下载文件对象连接
self.transport = paramiko.Transport((self.hostname, self.port))
self.transport.connect(username=self.username, password=self.password)
def command(self, cmd): # 正常执行命令的连接 至此对象内容就既有执行命令的连接又有上传下载链接
ssh = paramiko.SSHClient()
ssh._transport = self.transport
stdin, stdout, stderr = ssh.exec_command(cmd)
result = stdout.read()
return result
def upload(self, local_path, remote_path):
sftp = paramiko.SFTPClient.from_transport(self.transport)
sftp.put(local_path, remote_path)
sftp.close()
# 步骤2:下面的先别拷贝
def close(self):
self.transport.close()
def __enter__(self): # 对象执行with上下文会自动触发
self.open()
return self # 这里发挥上面with语法内的as后面拿到的就是什么
def __exit__(self, exc_type, exc_val, exc_tb): # with执行结束自动触发
self.close()
"""
推到步骤:
1.初次封装
只有init、open、command、upload、close方法
这个时候要想执行和上传下载都支持必须先执行open方法,所有操作完毕之后执行close方法
obj = SSHProxy(...)
obj.open()
obj.command()
obj.upload()
...
obj.close()
2.进阶升华
每次都需要先open最后再close 这种操作跟我们之前python基础问文件操作有点类似
文件操作最后利用with上下玩完成简便写法 但是paramiko模块产生的对象默认是不支持with语法的
obj = SSHProxy(...)
with obj 报错 但是报错信息里面有提示 说对象里面没有__enter__方法 也就是说with会自动触发对象__enter__方法
"""
if __name__ == '__main__':
with SSHProxy("127.0.0.1",22,'root','jason123') as ssh:
# 拿到改对象后就可以无限制的在一个链接内执行命令并上传下载文件
ssh.command('df')
ssh.command('df')
ssh.upload(r'D:\jason\s10\day01\4.基于paramiko操作\xx', '/data/s27/xx')
linux命令与公私钥的更多相关文章
- 安全运维 -- Linux服务器使用公私钥密匙证书登录
环境:Ubuntu 16 前言 黑客遍地都是,ssh/pop3/ftp等爆破工具的流行让站长的日常运维工作量大大加重.Metasplot,Bruter等工具更是针对以上协议有专门 的破解方法,有字典破 ...
- linux命令生成公私钥
生成原始rsa私钥文件: openssl genrsa -out rsa_private_key.pem 1024 将原始的rsa私钥转换未pkcs8格式(即生成私钥文件): openssl pkcs ...
- 用mac的terminal通过公私钥和ssh登录Linux
刚开始使用mac,会觉得很难用,在网上找的方法也差强人意,经过自己的实践,找到下面这种方法,很好用,步骤也很简单 1.在mac本的个人目录下创建一个文件夹:.ssh. 在这个文件夹下使用ssh- ...
- Linux ssh 公私钥配置
Linux ssh 公私钥配置 ssh 公私钥可实现无密码的情况下直接直接登录到服务端.方便我们管理,而且也可以设置ssh完全通过公私钥登录,不可通过密码登录,来提高我们的服务器安全程度. 配置 生成 ...
- ssh公私钥登录方式设置
在Linux中ssh登录远程主机的时候能够进行公私钥的认证方式. ①环境说明:两台Linux主机,host1:192.168.5.1,host2:192.168.5.10. 如今在host1上面设置然 ...
- linux命令学习笔记
操作文件和文件夹: copy: $ cp file1 file2 $ cp -r dir1 dir2 move: $ mv file .. $ mv file dir/ rename: $ mv fi ...
- 使用openssl命令剖析RSA私钥文件格式
原文 https://blog.csdn.net/zhymax/article/details/7683925 Openssl提供了强大证书功能,生成密钥对.证书,颁发证书.生成crl.验证证书.销毁 ...
- (转)Linux命令之Ethtool用法详解
Linux命令之Ethtool用法详解 原文:http://www.linuxidc.com/Linux/2012-01/52669.htm Linux/Unix命令之Ethtool描述:Ethtoo ...
- linux 命令练习 2018-08-27
linux 命令练习 2018-08-27 uname 显示系统名字 [test@localhost ~]$ uname Linux uname -a 即列出linux的内核版本号 [test@ ...
- Openssl生成RSA公私钥以及将公钥转换成C#支持的格式
Openssl生成RSA公私钥以及将公钥转换成C#支持的格式 1.RSA算法介绍 RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密.RSA ...
随机推荐
- 题解 P6745 『MdOI R3』Number
前言 不知道是不是正解但是觉得挺好理解. 科学计数法 将一个数表示为\(a\times 10^x\) 的形式.其中\(a\leq10\),\(x\) 为整数. \(\sf Solution\) 其实这 ...
- 十三、Pod的资源控制器类型
Pod 的资源控制器类型 一.Pod 的资源控制器类型 什么是控制器呢?简单来说,控制器就好比是影视剧里面的剧本,演员会根据剧本所写的内容来针对不同的角色进行演绎,而我们的控制器就好比是剧本,Kube ...
- shell脚本之一键部署openV~P~N
提前准备:/root目录下: checkpsw.sh ## 官方提供的自定义脚本,可在http://openvpn.se/files/other/checkpsw.sh下载 openvpn@.serv ...
- DNS 解析 prefeath
本文将详细介绍DNS预解析prefetch的主要内容 概述 DNS(Domain Name System, 域名系统),是域名和IP地址相互映射的一个分布式数据库.DNS 查询就是将域名转换成 IP ...
- MindStudio模型训练场景精度比对全流程和结果分析
摘要:MindStudio是一套基于华为昇腾AI处理器开发的AI全栈开发平台 本文分享自华为云社区<MindStudio模型训练场景精度比对全流程和结果分析>,作者:yd_24730208 ...
- 重学c#系列——动态类型[二十二]
前言 该系列准备继续完善,一共108篇,持续更新. 正文 为什么有动态类型呢? 是因为很多东西天生就是动态类型的. 比如xml 和 json.cvs.数据库表,这些本来就是数据类型的. 在反射系列中提 ...
- freemarker if 回填CheckBox思路
开发场景中遇到这样的一个问题,在网上也找了一些结局方法,但不成功,于是自己写了一个笨一点的方法,算是一种方法,希望对遇到该开发场景的朋友有所帮助. freemarker html代码: <tab ...
- HCIE Routing&Switching之MPLS静态LSP配置
前文我们了解了MPLS基础理论部分,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16928096.html:今天我们来聊一聊MPLS静态LSP配置相关话题: ...
- 干电池升压5V,功耗比较低
干电池升压5V,功耗10uA PW5100干电池升压5V芯片 输出电容: 所以为了减小输出的纹波,需要比较大的输出电容值.但是输出电容过大,就会使得系统的 反应时间过慢,成本也会增加.所以建议使用一个 ...
- 看完这篇,还不懂JAVA内存模型(JMM)算我输
欢迎关注专栏[JAVA并发] 更多技术干活尽在个人公众号--JAVA旭阳 前言 开篇一个例子,我看看都有谁会?如果不会的,或者不知道原理的,还是老老实实看完这篇文章吧. @Slf4j(topic = ...