使用python在远程设备上执行sed命令';s telnetlib

使用python在远程设备上执行sed命令';s telnetlib,python,sed,text-processing,telnetlib,Python,Sed,Text Processing,Telnetlib,我有一个远程设备,其中运行着telnetd守护进程。我想执行一些sed命令来更新/etc/securetty文件,并通过telnet连接将pts/0、pts/1…pts/n添加到此设备上的文件。我使用telnetlib编写了以下python函数来执行sed命令: def add_terminals(self): print "Adding enough terminals for telnet...." self.telnet.write("sed -i '/pts\/[0-9]

我有一个远程设备,其中运行着
telnetd
守护进程。我想执行一些
sed
命令来更新
/etc/securetty
文件,并通过telnet连接将
pts/0、pts/1…pts/n
添加到此设备上的文件。我使用
telnetlib
编写了以下
python
函数来执行
sed
命令:

def add_terminals(self):
    print "Adding enough terminals for telnet...."
    self.telnet.write("sed -i '/pts\/[0-9]/d' /etc/securetty")
    self.telnet.write("\n")
    time.sleep(1)
    self.telnet.write("sed -i '$a \ ' /etc/securetty")
    self.telnet.write("\n")
    time.sleep(1)
    self.telnet.write("sed -i '$a \# Local X displays added by me' /etc/securetty")
    self.telnet.write("\n")
    time.sleep(1)
    self.telnet.write("sed -i '$a pts/0\\npts/1\\npts/2\\npts/3\\npts/4\\npts/5\\npts/6\\npts/7\\npts/8\\npts/9' /etc/securetty")
    self.telnet.write("\n")
    time.sleep(1)
上述方法产生如下输出:

# Local X displays added by me                              
pts/0\npts/1\npts/2\npts/3\npts/4\npts/5\npts/6\npts/7\npts/8\npts/9
而我想要的结果是:

# Local X displays added by me
pts/0
pts/1
pts/2
pts/3
pts/4
pts/5
pts/6
pts/7
pts/8
pts/9
我认为
sed
命令本身是错误的。如何获得所需的输出


PS:我使用的是
yocto项目中的
poky linux
,我的
sed
版本被称为
,这不是GNU-sed版本4.0

如果使用
pts/0\npts
而不是
pts/0\\npts
,当我用
\n
替换
\\n
时,输出是什么,它给出了
pts/0npts/1npts/2npts/3npts/4npts/5npts/6npts/7npts/8npts/9
。不确定,但python字符串格式造成了麻烦?除了前面的建议之外,尝试使用
r”“
我刚刚验证过,普通的
sed
命令本身是有缺陷的。在终端上执行它会得到相同的输出。因此,
python
不是罪魁祸首。您必须添加sed版本和您正在使用的操作系统<代码>序号5 | sed'$a pts/0\npts/1\npts/2\npts/3\npts/4\npts/5\npts/6\npts/7\npts/8\npts/9'按预期工作