当前位置: 首页 > 面试题库 >

在以下脚本中“ \ r”有什么作用?

魏鸿禧
2023-03-14
问题内容

我正在使用以下脚本通过Telnet重新启动路由器:

#!/usr/bin/env python

import os
import telnetlib
from time import sleep

host = "192.168.1.1"
user = "USER"
password = "PASSWORD"
cmd = "system restart"

tn = telnetlib.Telnet(host)
sleep(1)

tn.read_until("Login: ")
tn.write(user + "\n\r")
sleep(1)

tn.read_until("Password: ")
tn.write(password + "\n\r")
sleep(1)

tn.write(cmd + "\n\r")

我不知道为什么,但是从上述代码中删除“ \ r”会使脚本无法正常工作。那么,该脚本中的“ \ r”有什么作用?通常什么时候使用“ \ r”?

注意:我了解“回车”,但仍无法在脚本中弄清楚它的用法。我正在Linux中运行此脚本。


问题答案:

'\r'字符是回车,并且都需要用于在网络虚拟终端会话换行符回车换行对。

根据旧的telnet规范(RFC 854)(第11页):

定义的序列“ CR LF”将使NVT位于下一个打印行的左边缘(例如,序列“ LF CR”)。

但是,根据最新规范(RFC5198)(第13页):

  1. 在Net-ASCII中,除非紧随其后是NUL或LF,并且后一个(CR
    LF)指定“换行”功能,否则不得显示CR。今天并且如上所述,CR通常应仅在LF之后出现。由于可以通过其他方式更好地进行页面布局,因为NUL在某些编程语言中具有特殊的解释,并且为了避免其他类型的混乱,因此应如上所述避免CR
    NUL。

  2. LF CR不应出现,除非是多个CR LF序列(例如CR LF CR LF)的副作用。

因此,Telnet中的换行符应该始终是,'\r\n'但是大多数实现尚未更新,或者'\n\r'为了向后兼容而保留了旧版本。



 类似资料:
  • 问题内容: 此语句在shell脚本中有什么作用? 问题答案: 从手册中: errtrace与-E相同。 -E如果设置,则ERR函数上的任何陷阱都将被Shell函数,命令替换以及在子Shell环境中执行的命令继承。在这种情况下,通常不会继承ERR陷阱。 当被使能,当错误(命令返回一个非零码)函数或子外壳内发生也被触发的ERR陷阱。换一种说法是,除非启用,否则函数或子Shell的上下文不会继承ERR陷

  • 问题内容: 我正在尝试编写一个小脚本以将当前目录更改为我的项目目录: 我将此文件另存为proj,使用添加了执行权限,然后将其复制到。当我通过以下方式调用它时 ,它什么也没做。我究竟做错了什么? 问题答案: Shell脚本在一个子Shell中运行,每个子Shell对当前目录都有自己的概念。的成功,但只要子shell退出,你是在交互式背壳和从来都没有改变,因此。 解决此问题的一种方法是改用别名:

  • 问题内容: 我正在尝试让python删除一些目录,但出现访问错误。我认为python用户帐户没有权限吗? 是我运行脚本时得到的。 我试过了 它们都返回相同的错误。 问题答案: 即使将文件和目录设置为“只读”,即使我们刚刚复制了文件和目录,我们也遇到了问题。为您提供某种异常处理程序来处理这种情况。您调用它并提供一个异常处理程序,如下所示: 您可能想尝试一下。

  • 问题内容: 我在编写一个简单的shell脚本,发现我的shell脚本不需要shebang行 如果我授予脚本执行权限,并使用执行。运行正常。 我正在使用shell,实际上是指向。 我知道shebang行用于告诉shell在您的其余脚本中使用哪个解释器。 如果我错过了perl中的shebang行,请赋予执行权限并运行,它不起作用。 这里到底发生了什么?如果使用,实际上何时需要shebang行? 问题答

  • 在“Linux Shell脚本编写指南”一书中 它说 扩展为 $、$2、3 等等, 扩展为 ,其中 是 的第一个字符。 $ 和 之间有什么区别, 是什么意思?

  • 问题内容: 该命令做什么?我确实了解其他命令的功能,例如启动,构建,测试。但是不知道弹出。 问题答案: create-react-app封装了它在内部使用的所有npm模块,因此您的package.json将非常干净和简单,而您不必担心它。 但是,如果您想开始做更复杂的事情并安装可能与在后台使用的create-react- app模块交互的模块,则这些新模块需要知道可用的内容,而不是可用的,这意味着