在xshell客户端下远程登录Linux服务器,做如下操作,Python 版本 2.7。
#!/usr/bin/env python
vi ip.py
from IPy import IP
ip_1 = raw_input("please input ip: ")
ip = IP('192.168.3.0/28')
ip1 = IP(ip_1)
if ip1 in ip:
print ip1,'is in',ip
else:
print ip1,'is not in',ip
##############################################
运行命令:python ip.py
运行结果:
please input ip: 192.168.3.1
Traceback (most recent call last):
File "ip.py", line 5, in <module>
ip1 = IP(ip_1)
File "/usr/local/python27/lib/python2.7/site-packages/IPy.py", line 246, in __init__
(self.ip, parsedVersion) = parseAddress(ip)
File "/usr/local/python27/lib/python2.7/site-packages/IPy.py", line 1431, in parseAddress
raise ValueError("IP Address format was invalid: %s" % ipstr)
ValueError: IP Address format was invalid:
网上查了很多相关资料都没找到答案,最后发现在我输入ip+回车后,后面居然还空了一行,于是怀疑跟linux下换行有关系,于是特殊查了一些换行下的相关材料。
原因:xshell下默认换行是CR+LF,即回车+换行,即\r+\n,但在linux中只需要\n即可,进而导致ip_1多接收了一些字符,进而报错。
解决方案:打开xshell,选择“属性”-->"终端"-->"VT模式"-->“New Line Mode(NLM)”选项的沟去掉,重开一下xshell窗口。
参考:
Linux下的换行符\n\r以及txt和word文档的使用
xshell 自动换行设置