# 远程登录控制台
> 译者:[OSGeo 中国](https://www.osgeo.cn/)
Scrapy附带一个内置的telnet控制台,用于检查和控制Scrapy运行过程。telnet控制台只是一个运行在scrappy进程内部的常规python shell,因此您可以从中做任何事情。
telnet控制台是一个 [built-in Scrapy extension](extensions.html#topics-extensions-ref) 它在默认情况下是启用的,但如果需要,您也可以禁用它。有关扩展本身的更多信息,请参阅 [Telnet控制台扩展](extensions.html#topics-extensions-ref-telnetconsole) .
警告
通过公共网络使用telnet控制台是不安全的,因为telnet不提供任何传输层安全性。拥有用户名/密码验证不会改变这一点。
预期用途是本地连接到正在运行的Scrapy Spider(Spider进程和Telnet客户端在同一台计算机上)或通过安全连接(VPN、SSH通道)进行连接。请避免在不安全的连接上使用telnet控制台,或使用 [`TELNETCONSOLE_ENABLED`](settings.html#std:setting-TELNETCONSOLE_ENABLED) 选择权。
## 如何访问telnet控制台
telnet控制台侦听中定义的TCP端口 [`TELNETCONSOLE_PORT`](#std:setting-TELNETCONSOLE_PORT) 设置,默认为 `6023` . 要访问控制台,您需要键入:
```py
telnet localhost 6023
Trying localhost...
Connected to localhost.
Escape character is '^]'.
Username:
Password:
>>>
```
默认用户名为 `scrapy` 密码是自动生成的。自动生成的密码可以在垃圾日志中看到,如下所示:
```py
2018-10-16 14:35:21 [scrapy.extensions.telnet] INFO: Telnet Password: 16f92501e8a59326
```
默认用户名和密码可以被设置覆盖 [`TELNETCONSOLE_USERNAME`](#std:setting-TELNETCONSOLE_USERNAME) 和 [`TELNETCONSOLE_PASSWORD`](#std:setting-TELNETCONSOLE_PASSWORD) .
警告
用户名和密码仅提供有限的保护,因为telnet不使用安全传输-默认情况下,即使设置了用户名和密码,通信也不会加密。
您需要在Windows和大多数Linux发行版中默认安装的telnet程序。
## telnet控制台中的可用变量
telnet控制台就像一个运行在scrappy进程内部的常规python shell,所以您可以从中做任何事情,包括导入新模块等。
但是,telnet控制台附带一些为方便起见而定义的默认变量:
| 捷径 | 描述 |
| --- | --- |
| `crawler` | 残废的爬虫( [`scrapy.crawler.Crawler`](api.html#scrapy.crawler.Crawler "scrapy.crawler.Crawler") 对象) |
| `engine` | crawler.engine属性 |
| `spider` | 主动 Spider |
| `slot` | 发动机槽 |
| `extensions` | 扩展管理器(crawler.extensions属性) |
| `stats` | stats收集器(crawler.stats属性) |
| `settings` | Scrapy设置对象(crawler.settings属性) |
| `est` | 打印发动机状态报告 |
| `prefs` | 内存调试(请参见 [调试内存泄漏](leaks.html#topics-leaks) ) |
| `p` | 到的快捷方式 [pprint.pprint](https://docs.python.org/library/pprint.html#pprint.pprint) 功能 |
| `hpy` | 内存调试(请参见 [调试内存泄漏](leaks.html#topics-leaks) ) |
## telnet控制台使用示例
以下是使用telnet控制台可以执行的一些示例任务:
### 查看发动机状态
你可以使用 `est()` scrapy引擎使用telnet控制台快速显示其状态的方法:
```py
telnet localhost 6023
>>> est()
Execution engine status
time()-engine.start_time : 8.62972998619
engine.has_capacity() : False
len(engine.downloader.active) : 16
engine.scraper.is_idle() : False
engine.spider.name : followall
engine.spider_is_idle(engine.spider) : False
engine.slot.closing : False
len(engine.slot.inprogress) : 16
len(engine.slot.scheduler.dqs or []) : 0
len(engine.slot.scheduler.mqs) : 92
len(engine.scraper.slot.queue) : 0
len(engine.scraper.slot.active) : 0
engine.scraper.slot.active_size : 0
engine.scraper.slot.itemproc_size : 0
engine.scraper.slot.needs_backout() : False
```
### 暂停、恢复和停止 Scrapy 发动机
暂停:
```py
telnet localhost 6023
>>> engine.pause()
>>>
```
恢复:
```py
telnet localhost 6023
>>> engine.unpause()
>>>
```
停止::
```py
telnet localhost 6023
>>> engine.stop()
Connection closed by foreign host.
```
## Telnet控制台信号
```py
scrapy.extensions.telnet.update_telnet_vars(telnet_vars)
```
在telnet控制台打开之前发送。您可以连接到这个信号来添加、删除或更新telnet本地命名空间中可用的变量。为此,需要更新 `telnet_vars` 听写你的处理程序。
| 参数: | **telnet_vars** (_dict_) -- telnet变量的dict |
| --- | --- |
## 远程登录设置
以下是控制telnet控制台行为的设置:
### TELNETCONSOLE_PORT
违约: `[6023, 6073]`
用于telnet控制台的端口范围。如果设置为 `None` 或 `0` ,使用动态分配的端口。
### TELNETCONSOLE_HOST
违约: `'127.0.0.1'`
telnet控制台应该监听的接口
### TELNETCONSOLE_USERNAME
违约: `'scrapy'`
用于telnet控制台的用户名
### TELNETCONSOLE_PASSWORD
违约: `None`
telnet控制台使用的密码,默认行为是让它自动生成。
- 简介
- 第一步
- Scrapy at a glance
- 安装指南
- Scrapy 教程
- 实例
- 基本概念
- 命令行工具
- Spider
- 选择器
- 项目
- 项目加载器
- Scrapy shell
- 项目管道
- Feed 导出
- 请求和响应
- 链接提取器
- 设置
- 例外情况
- 内置服务
- Logging
- 统计数据集合
- 发送电子邮件
- 远程登录控制台
- Web服务
- 解决具体问题
- 常见问题
- 调试spiders
- Spider 合约
- 常用做法
- 通用爬虫
- 使用浏览器的开发人员工具进行抓取
- 调试内存泄漏
- 下载和处理文件和图像
- 部署 Spider
- AutoThrottle 扩展
- Benchmarking
- 作业:暂停和恢复爬行
- 延伸 Scrapy
- 体系结构概述
- 下载器中间件
- Spider 中间件
- 扩展
- 核心API
- 信号
- 条目导出器
- 其余所有
- 发行说明
- 为 Scrapy 贡献
- 版本控制和API稳定性
