python处理SSH和Redis
这种方式是否可以远程操作其他主机执行一些命令
import paramiko
# 创建SSH连接
transport = paramiko.Transport(('192.168.230.147',22))
transport.connect(username='root',password='YhMjQx521134')
# 创建SSH客户端连接对象
ssh = paramiko.SSHClient()
# ssh.get_transport = transport
ssh._transport = transport
# stdin 标准输入
# stdout 标准输出
# stderr 标准错误
stdin, stdout, stderr = ssh.exec_command('ls /opt')
print(stdout.read().decode())
基于python代码可以操作远程主机
此类应用可以完成远程应用部署,远程监控,文件传输,
但是不知道为什么,这样执行的命令中 如果包含 > 或者 | 这些符号都执行不成功,但是也没报错,这又是为什么?
# 创建sftp链接对象,用于远程传输文件
sftp = paramiko.SFTPClient.from_transport(transport)
sftp.put('./woniunote.jpg','/opt/woniunote.jpg')
Redis通信过程
1、协议核心数据规则
*1 # 下述的命令有两个字符串构成
$4 # 下一个字符串长度为4
auth
$6 # 下一个字符串长度为6
12345
*3
$3
set
$4
name
$5
woniu
传输过去就是 set name woniu
不过我们在Python中拼接字符串的时候还要加上\r\n,这是tcp协议通信中标准的换行符
import socket
s = socket.socket()
s.connect(('192.168.230.147',6379))
s.send('*2\r\n$4\r\nauth\r\n$9\r\np-0p-0p-0\r\n'.encode())
print(s.recv(1024).decode())
time.sleep(1)
s.send('*3\r\n$3\r\nset\r\n$4\r\nname\r\n$5\r\nwoniuxy\r\n'.encode())
print(s.recv(1024).decode())
time.sleep(1)
s.send('*2\r\n$3\r\nget\r\n$4\r\nname\r\n'.encode())
print(s.recv(1024).decode())