UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 0: invalid continua
Posted apff
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 0: invalid continua相关的知识,希望对你有一定的参考价值。
需求:python如何实现普通用户登录服务器后切换到root用户再执行命令
解决参考:
代码:
def verification_ssh(host,username,password,port,root_pwd,cmd): s=paramiko.SSHClient() s.load_system_host_keys() s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) s.connect(hostname = host,port=int(port),username=username, password=password) if username != ‘root‘: ssh = s.invoke_shell() time.sleep(0.1) ssh.send(‘ export LANG=en_US.UTF-8 ‘) #解决错误的关键,编码问题 ssh.send(‘su - ‘) buff = "" while not buff.endswith(‘Password: ‘): #true resp = ssh.recv(9999) print(resp) buff +=resp.decode(‘utf8‘) print(‘hhhhh‘) print(buff) ssh.send(root_pwd) ssh.send(‘ ‘) buff = "" # n = 0 while not buff.endswith(‘# ‘): # n += 1 resp = ssh.recv(9999) print(resp) buff +=resp.decode(‘utf8‘) # print(n) # if n >=3: # break # print(buff) ssh.send(‘sh /tmp/check/101.sh‘) #放入要执行的命令 ssh.send(‘ ‘) buff = ‘‘ # m = 0 while not buff.endswith(‘# ‘): resp = ssh.recv(9999).decode() buff +=resp # m += 1 # print(m) result = buff # print(type(result)) # print(result) s.close() if __name__ == "__main__": verification_ssh(‘172.25.240.164‘, ‘cattsoft‘, ‘[email protected]‘, ‘52222‘, ‘Huawei12#$‘, ‘id‘)
遇到问题:
思路:经过检查发现这个是中文字符集和英文字符集返回密码格式不同导致的,在代码中加入:ssh.send(‘ export LANG=en_US.UTF-8 ‘),即可解决上述问题
因为中文和英文字符集转换不同,所以导致报错。
以上是关于UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 0: invalid continua的主要内容,如果未能解决你的问题,请参考以下文章
python编码问题:UnicodeDecodeError: 'gbk' codec can't decode
python UnicodeDecodeError: 'ascii' codec can't decode byte ...
UnicodeDecodeError: 'ascii' codec can't decode byte错误解决方案
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xcd