一般跟linux交互,喜欢用ssh,但是我们要编程,就需要一个 paramiko库,支持ssh2协议,通过ssh默认22端口连接到服务器
client肯定有方法来连接服务器,开启一个虚拟机
这里一旦cd,就跟linux一样跑到家目录里了,查看家目录路径
注意需要切换用户
用这个账号密码登录
还有一个执行命令,这里会返回三个东西
返回一个三元组
这个三元组就是这三个样子,输出完返回一个三元组,通过这个三元组可以拿不同的值。标准输出,标准失败,看一下不一定成功,有链接一般close
链接服务器然后执行命令
这里登陆一次,在.ssh文件夹里会有信息
会把登录成功的135信息放在这
把这个文件删除,防止干扰
没有应答
换成142就直接告诉你失败,没有找到known_hosts这个文件,登录过,确认过的主机会记录到这个文件,再次登录就会读这个文件,
ssh会把你每次访问的计算机的公钥信息,放到known_hosts,下次访问的时候就会比对,如果机器有所不同会提示警告
现在就直接连接服务器的时候不去里面找了
这里就是结果
换个没有的命令就出错
这个文件夹就是不访问了
现在把命令的返回值拿到了,ansible底层其实就是用了这个库,但是这个坏处就是暴露密码,所以要做免密登录
免密登录需要配置公钥私钥
上面私钥底下公钥
用ssh-copy-id -i就是公钥信息,把公钥拷贝到其他主机
现在这个目录就多了
公钥就过来了
试试现在能否免密登录,现在不提供密码,就立即执行报错了,因为命令不存在
一般分布式服务都要做免密登录,因为内部需要做一些操作
只要登录了其他主机
**
就会保留对方主机的信息**
跟你自己登录的信息还是有所不同,所以还是要加一下这一行代码
执行ifconfig失败
**
找不到命令就看下path路径**
还不在path路径里
加一下路径就拿回来了
要加这样一句,否则会出错
这个文件权限很重要,600或者400都可以
这个库要使用运维也是一个选择,一般称为无agent
无代理,直接连接过去,发送指令即可,称为agentless