草庐IT

网络拓扑配置案例练习(VRRP,浮动路由,DHCP,三层交换机配置)

怀恋的愤怒 2023-10-15 原文

网络拓扑配置案例

网络拓扑配置案例练习

在这篇文章中将记录网络的常见配置:VRRP,浮动路由,DHCP,三层交换机配置等,练习怎么配置这些内容,话不多说,直接开始

网络拓扑

在这个网络拓扑中,划分了4个vlan,每台pc对应一个vlan;配置了两台三层交换机(LSW3和LSW4),做虚拟路由冗余协议VRRP1,与路由器AR1一起做浮动路由2配置(概念就不过多解释,直接上引用,不懂的小伙伴可以点击进入查看);路由器AR1为边界路由器,AR2和AR3模拟为ISP的路由器,PC5模拟为互联网其它用户,不同接口的IP地址配置见网络拓扑图,网络拓扑图如下图所示。

需求描述

  1. 基本配置:
    a. 为每台PC配置IP地址,掩码,网关;
    b. 为交换机创建vlan,配置access口,trunk口,划分vlan;
    c. 配置不同vlan的网关,配置路由器不同接口IP地址;
  2. 配置vrrp:这里将LSW3设置为master组,将LSW4设置为backup组,虚拟网关的IP都为:x.1.1.254,master组的IP都为:x.1.1.252,backup组的IP都为:x.1.1.253,测试不同vlan间的访问能否互通。
  3. 配置路由,AR1与两台三层交换机可以配置浮动路由,边界路由器可以配置默认路由,测试与PC5的连通性。
  4. 测试vrrp是否起作用,浮动路由是否起作用。
  5. 配置DHCP,让这些PC自动获取IP地址并能互通。

具体操作命令

交换机创建vlan,配置access、trunk口,划分vlan

为每台PC配置IP地址,掩码,网关这些基础操作忽略,如:PC1的IP为:10.1.1.1/24,网关为10.1.1.254。PC2,3,4,5也是类似。

  1. 创建vlan:
**LSW1:**
system-view
sysname LSW1
vlan batch 10 20 30 40
**LSW2:**
system-view
sysname LSW2
vlan batch 10 20 30 40
**LSW3:**
system-view
sysname LSW3
vlan batch 10 20 30 40 50 60
**LSW4:**
system-view
sysname LSW4
vlan batch 10 20 30 40 50 60

可以用:dis vlan命令查看自己创建了哪些vlan
2. 配置access口,划分到不同vlan中。

**LSW1:**	
[LSW1]interface Ethernet 0/0/2
[LSW1-Ethernet0/0/2]port link-type access 
[LSW1-Ethernet0/0/2]port default vlan 10	
[LSW1-Ethernet0/0/2]quit 
[LSW1]interface Ethernet 0/0/3	
[LSW1-Ethernet0/0/3]port link-type access 
[LSW1-Ethernet0/0/3]port default vlan 20
**LSW2:**
[LSW2-Ethernet0/0/2]port link-type access 	
[LSW2-Ethernet0/0/2]port default vlan 30	
[LSW2-Ethernet0/0/2]quit 	
[LSW2]interface Ethernet 0/0/3	
[LSW2-Ethernet0/0/3]port link-type access 	
[LSW2-Ethernet0/0/3]port default vlan 40	
[LSW2-Ethernet0/0/3]quit 
  1. 配置trunk口,在这个拓扑中,我们要配置的trunk就是不同交换机设备间连接的端口,为了方便起见,这次我们允许所有vlan通过,但是在实际环境中,为了安全起见,应该对vlan进行限制。
配置trunk口:
**LSW1:**
[LSW1]interface Ethernet 0/0/1
[LSW1-Ethernet0/0/1]port link-type trunk 
[LSW1-Ethernet0/0/1]port trunk allow-pass vlan all
[LSW1-Ethernet0/0/1]quit
[LSW1]interface Ethernet 0/0/4 
[LSW1-Ethernet0/0/4]port link-type trunk 
[LSW1-Ethernet0/0/4]port trunk allow-pass vlan all
**LSW2:**
[LSW2]interface Ethernet 0/0/1	
[LSW2-Ethernet0/0/1]port link-type trunk 
[LSW2-Ethernet0/0/1]port trunk allow-pass vlan all	
[LSW2-Ethernet0/0/1]quit 	
[LSW2]interface Ethernet 0/0/4
[LSW2-Ethernet0/0/4]port link-type trunk 
[LSW2-Ethernet0/0/4]port trunk allow-pass vlan all
[LSW2-Ethernet0/0/4]quit 
**LSW3:**
[LSW3]interface GigabitEthernet 0/0/1	
[LSW3-GigabitEthernet0/0/1]port link-type trunk 
[LSW3-GigabitEthernet0/0/1]port trunk allow-pass vlan all 	
[LSW3-GigabitEthernet0/0/1]quit 
[LSW3]interface GigabitEthernet 0/0/2
[LSW3-GigabitEthernet0/0/2]port link-type trunk 
[LSW3-GigabitEthernet0/0/2]port trunk allow-pass vlan all 	
[LSW3-GigabitEthernet0/0/2]quit 
[LSW3]interface GigabitEthernet 0/0/3
[LSW3-GigabitEthernet0/0/3]port link-type trunk 
[LSW3-GigabitEthernet0/0/3]port trunk allow-pass vlan all 	
[LSW3-GigabitEthernet0/0/3]quit 
**LSW4:**
[LSW4]interface GigabitEthernet 0/0/1
[LSW4-GigabitEthernet0/0/1]port link-type trunk 
[LSW4-GigabitEthernet0/0/1]port trunk allow-pass vlan all	
[LSW4-GigabitEthernet0/0/1]quit 
[LSW4]interface GigabitEthernet 0/0/2
[LSW4-GigabitEthernet0/0/2]port link-type trunk 
[LSW4-GigabitEthernet0/0/2]port trunk allow-pass vlan all
[LSW4-GigabitEthernet0/0/2]quit
[LSW4]interface GigabitEthernet 0/0/3
[LSW4-GigabitEthernet0/0/3]port link-type trunk 
[LSW4-GigabitEthernet0/0/3]port trunk allow-pass vlan all 	
[LSW4-GigabitEthernet0/0/3]quit 
  1. 配置不同vlan的虚拟网关,配置路由器不同接口IP地址
**LSW3:**
[LSW3]interface Vlanif 10	
[LSW3-Vlanif10]ip address 10.1.1.252 24 // master组IP
[LSW3-Vlanif10]quit 	
[LSW3]interface Vlanif 20 	
[LSW3-Vlanif20]ip address 20.1.1.252 24
[LSW3-Vlanif20]quit 	
[LSW3]interface Vlanif 30	
[LSW3-Vlanif30]ip address 30.1.1.252 24
[LSW3-Vlanif30]quit 	
[LSW3]interface Vlanif 40
[LSW3-Vlanif40]ip add	
[LSW3-Vlanif40]ip address 40.1.1.252 24	
[LSW3-Vlanif40]quit 	
[LSW3]interface Vlanif 50
[LSW3-Vlanif50]ip address 50.1.1.1 24
[LSW3-Vlanif50]quit 
[LSW3]interface GigabitEthernet 0/0/4
[LSW3-GigabitEthernet0/0/4]port link-type access 
[LSW3-GigabitEthernet0/0/4]port default vlan 50	
[LSW3-GigabitEthernet0/0/4]quit 

**LSW4:**
[LSW4]interface Vlanif 10
[LSW4-Vlanif10]ip address 10.1.1.253 24  // backup组IP
[LSW4-Vlanif10]quit	
[LSW4]interface Vlanif 20	
[LSW4-Vlanif20]ip address 20.1.1.253 24
[LSW4-Vlanif20]quit 
[LSW4]interface Vlanif 30	
[LSW4-Vlanif30]ip address 30.1.1.253 24
[LSW4-Vlanif30]quit	
[LSW4]interface Vlanif 40	
[LSW4-Vlanif40]ip address 40.1.1.253 24 
[LSW4-Vlanif40]quit 
[LSW4]interface Vlanif 60 	
[LSW4-Vlanif60]ip address 60.1.1.1 24
[LSW4-Vlanif60]quit 
[LSW4]interface GigabitEthernet 0/0/4	
[LSW4-GigabitEthernet0/0/4]port link-type access 
[LSW4-GigabitEthernet0/0/4]port default vlan 60	
[LSW4-GigabitEthernet0/0/4]quit 

**AR1:**
[AR1]interface GigabitEthernet 0/0/0
[AR1-GigabitEthernet0/0/0]ip address 50.1.1.2 24	
[AR1-GigabitEthernet0/0/0]quit 
[AR1]interface GigabitEthernet 0/0/1 	
[AR1-GigabitEthernet0/0/1]ip address 60.1.1.2 24	
[AR1-GigabitEthernet0/0/1]quit 
[AR1]interface GigabitEthernet 0/0/2	
[AR1-GigabitEthernet0/0/2]ip address 70.1.1.1 24	
[AR1-GigabitEthernet0/0/2]quit

**AR2:**
[AR2]interface GigabitEthernet 0/0/0	
[AR2-GigabitEthernet0/0/0]ip address 70.1.1.2 24	
[AR2-GigabitEthernet0/0/0]quit 
[AR2]interface GigabitEthernet 0/0/1
[AR2-GigabitEthernet0/0/1]ip address 80.1.1.1 24	
[AR2-GigabitEthernet0/0/1]quit 

**AR3:**	
[AR3]interface GigabitEthernet 0/0/0	
[AR3-GigabitEthernet0/0/0]ip address 80.1.1.2 24	
[AR3-GigabitEthernet0/0/0]quit 
[AR3]interface GigabitEthernet 0/0/1	
[AR3-GigabitEthernet0/0/1]ip address 90.1.1.254 24
[AR3-GigabitEthernet0/0/1]quit 

至此,我们就完成了需求的基本配置,下一步是进行vrrp配置。

vrrp配置

具体需求:将LSW3设置为master组,将LSW4设置为backup组,虚拟网关的IP都为:x.1.1.254,master组的IP都为:x.1.1.252,backup组的IP都为:x.1.1.253,测试不同vlan间的访问能否互通。

  1. master组LSW3配置:
[LSW3]interface Vlanif 10	
[LSW3-Vlanif10]vrrp vrid 10 virtual-ip 10.1.1.254 // 创建id为10的vrrp配置,虚拟IP为:10.1.1.254
[LSW3-Vlanif10]vrrp vrid 10 priority 110 // 设置该交换机的优先级
[LSW3-Vlanif10]vrrp vrid 10 preempt-mode timer delay 20 // 设置抢占时间
[LSW3-Vlanif10]quit 
[LSW3]int vlanif 20
[LSW3-Vlanif20]vrrp vrid 20 virtual-ip 20.1.1.254
[LSW3-Vlanif20]vrrp vrid 20 priority 110
[LSW3-Vlanif20]vrrp vrid 20 preempt-mode timer delay 20
[LSW3-Vlanif20]quit
[LSW3]int vlanif 30
[LSW3-Vlanif30]vrrp vrid 30 virtual-ip 30.1.1.254
[LSW3-Vlanif30]vrrp vrid 30 priority 110
[LSW3-Vlanif30]vrrp vrid 30 preempt-mode timer delay 20
[LSW3-Vlanif30]quit
[LSW3]int vlanif 40
[LSW3-Vlanif40]vrrp vrid 40 virtual-ip 40.1.1.254
[LSW3-Vlanif40]vrrp vrid 40 priority 110
[LSW3-Vlanif40]vrrp vrid 40 preempt-mode timer delay 20
[LSW3-Vlanif40]quit
// 以下是配置监听接口	
[LSW3]interface Vlanif 10 	
[LSW3-Vlanif10]vrrp vrid 10 track interface g0/0/4 reduce 20 // 跟踪g0/0/4的接口,假如这个接口坏了,则将优先级自降20	
[LSW3-Vlanif10]quit 
[LSW3]int vlanif 20
[LSW3-Vlanif20]vrrp vrid 20 track interface g0/0/4 reduce 20
[LSW3-Vlanif20]quit
[LSW3]int vlanif 30
[LSW3-Vlanif30]vrrp vrid 30 track interface g0/0/4 reduce 20
[LSW3-Vlanif30]quit
[LSW3]int vlanif 40
[LSW3-Vlanif40]vrrp vrid 40 track interface g0/0/4 reduce 20
[LSW3-Vlanif40]quit

2. backup组LSW4配置:

[LSW4]int vlanif 10
[LSW4-Vlanif10]vrrp vrid 10 virtual-ip 10.1.1.254 //vrid需与相同vlan接口一致
[LSW4-Vlanif10]vrrp vrid 10 priority 100
[LSW4-Vlanif10]vrrp vrid 10 preempt-mode timer delay 20
[LSW4-Vlanif10]quit
[LSW4]int vlanif 20
[LSW4-Vlanif20]vrrp vrid 20 virtual-ip 20.1.1.254
[LSW4-Vlanif20]vrrp vrid 20 priority 100
[LSW4-Vlanif20]vrrp vrid 20 preempt-mode timer delay 20
[LSW4-Vlanif20]quit
[LSW4]int vlanif 30
[LSW4-Vlanif30]vrrp vrid 30 virtual-ip 30.1.1.254
[LSW4-Vlanif30]vrrp vrid 30 priority 100
[LSW4-Vlanif30]vrrp vrid 30 preempt-mode timer delay 20
[LSW4-Vlanif30]quit
[LSW4]int vlanif 40
[LSW4-Vlanif40]vrrp vrid 40 virtual-ip 40.1.1.254
[LSW4-Vlanif40]vrrp vrid 40 priority 100
[LSW4-Vlanif40]vrrp vrid 40 preempt-mode timer delay 20
[LSW4-Vlanif40]quit

自此,我们就将vrrp配置好了,下面我们来测试下不同网段能否正常通信,假如vrrp配置没有问题,是能够正常通信的,配置有问题肯定是无法通信了,当然,在最后验证环节可以看到vrrp的作用。
如下图,用PC1去ping PC2能够正常通信,说明vrrp配置没有问题。


路由配置

**技巧:**边界路由器可以配置默认路由器,若是中间的路由器,则不同的出口都要去配路由,除非某个接口是边界出口。此外在配置一个路由器的路由后,就进行一段的连通性测试,保证能够及时发现问题和解决问题。

**LSW3和LSW4**
[LSW3]ip route-static 0.0.0.0 0.0.0.0 50.1.1.2
[LSW4]ip route-static 0.0.0.0 0.0.0.0 60.1.1.2
**AR1:**
[AR1]ip route-static 10.1.1.0 24 50.1.1.1	
[AR1]ip route-static 20.1.1.0 24 50.1.1.1
[AR1]ip route-static 30.1.1.0 24 50.1.1.1
[AR1]ip route-static 40.1.1.0 24 50.1.1.1
[AR1]ip route-static 10.1.1.0 24 60.1.1.1 preference 2
[AR1]ip route-static 20.1.1.0 24 60.1.1.1 preference 2
[AR1]ip route-static 30.1.1.0 24 60.1.1.1 preference 2
[AR1]ip route-static 40.1.1.0 24 60.1.1.1 preference 2
[AR1]ip route-static 80.1.1.0 24 70.1.1.2	
[AR1]ip route-static 90.1.1.0 24 70.1.1.2
**AR2:**
[AR2]ip route-static 90.1.1.0 24 80.1.1.2
[AR2]ip route-static 10.1.1.0 24 70.1.1.1
[AR2]ip route-static 20.1.1.0 24 70.1.1.1
[AR2]ip route-static 30.1.1.0 24 70.1.1.1
[AR2]ip route-static 40.1.1.0 24 70.1.1.1
[AR2]ip route-static 50.1.1.0 24 70.1.1.1
[AR2]ip route-static 60.1.1.0 24 70.1.1.1
**AR3:**
[AR3]ip route-static 0.0.0.0 0.0.0.0 80.1.1.1

最后,用PC1 ping了PC5,测试了下连通性没有问题,如下图所示。

至此,我们就完成了整个网络都连通的任务,最后我们来验证一下vrrp和浮动路由的作用

验证vrrp和浮动路由

  1. vrrp验证
    先让PC1持续ping PC5,当我们把master组(LSW3)交换机的ge0/0/4口(即我们配置vrrp设置的监听口)down掉,看看backup组(LSW4)交换机能否顶替上,此外再看看会不会ping不通,如果能够持续通信,说明vrrp配置就成功了。

(1)down掉前,ping情况,master组和backup组的vrrp情况:



(2)把LSW3 ge0/0/4 设置shutdown后,ping情况,master组和backup组的vrrp情况:




从上几张图可以看到,在切换到备份组交换机的时候,通信会丢几个包,但是不影响总体通信。而由于通信链路的阻塞,原本的master组交换机变成了backup组交换机,原本的backup组交换机变成了master组交换机。综上可以看到,vrrp配置成功了。
3. 浮动路由验证
这次我们运用wireshark抓包功能,分别抓取路由器AR1的两个接口(GE0/0/0和GE0/0/1)进行浮动路由验证。在上面配置中,GE0/0/0>GE0/0/1,因此,在链路正常的情况下,不同主机的通信应该是经过GE0/0/0,抓GE0/0/0口的包应当是有内容的。当GE0/0/0出现故障(这里我们将其shutdown掉模拟故障),就会走GE0/0/1,抓GE0/0/1口的包应当是有内容的。
链路正常情况:

主动将GE0/0/0shutdown掉,GE0/0/1的抓包情况:

DHCP配置

在LSW3配置DHCP中继,使得PC1-PC4能够自动获取IP地址。
DHCP配置可以分为基于全局的配置模式和基于接口的配置模式(前提是该接口配置了网关)
基于全局的配置模式命令示例如下:

dhcp enable 
ip pool 10
network 10.1.1.0 mask 24
gateway-list 10.1.1.254
dns-list 8.8.8.8
interface ge 0/0/0 // 路由器接口
dhcp select global

本次进行的是基于接口的配置,如下:

[LSW3]dhcp enable 
[LSW3]interface Vlanif 10
[LSW3-Vlanif10]dhcp select interface 
[LSW3-Vlanif10]dhcp server lease day 1 // 设置租期
[LSW3-Vlanif10]dhcp server dns-list 8.8.8.8 // 设置dns地址
[LSW3-Vlanif10]quit 
[LSW3]interface Vlanif 20
[LSW3-Vlanif20]dhcp select interface 
[LSW3-Vlanif20]dhcp server lease day 1
[LSW3-Vlanif20]dhcp server dns-list 8.8.8.8
[LSW3-Vlanif20]quit 
[LSW3]interface Vlanif 30
[LSW3-Vlanif30]dhcp select interface 	
[LSW3-Vlanif30]dhcp server lease day 1
[LSW3-Vlanif30]dhcp server dns-list 8.8.8.8
[LSW3-Vlanif30]quit 	
[LSW3]interface Vlanif 40	
[LSW3-Vlanif40]dhcp select interface 	
[LSW3-Vlanif40]dhcp server lease day 1
[LSW3-Vlanif40]dhcp server dns-list 8.8.8.8
[LSW3-Vlanif40]quit

验证:


测试连通性:

至此,就完成了DHCP配置并验证通过了。

总结

感觉进行网络配置,我总结的经验就是:

  1. 从基本的配置开始,比如:IP,vlan,trunk等;
  2. 从局域网的配置开始,先把局域网调通再进行后续配置;
  3. 每配置一步,或者配置一段链路都需要进行测试,及时发现问题,及时解决问题。
    以上就是网络配置案例的全部,当然可能还缺防火墙,服务器,NAT等内容,有什么问题欢迎评论指正,后续会继续更新,不断学习,继续进步。

  1. vrrp协议详解 ↩︎

  2. 浮动路由详解 ↩︎

有关网络拓扑配置案例练习(VRRP,浮动路由,DHCP,三层交换机配置)的更多相关文章

  1. ruby-on-rails - 独立 ruby​​ 脚本的配置文件 - 2

    我有一个在Linux服务器上运行的ruby​​脚本。它不使用rails或任何东西。它基本上是一个命令行ruby​​脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg

  2. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  3. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  4. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  5. 网络编程套接字 - 2

    网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识

  6. 神州数码无线产品(AC+AP)配置 - 2

    注意:本文主要掌握DCN自研无线产品的基本配置方法和注意事项,能够进行一般的项目实施、调试与运维AP基本配置命令AP登录用户名和密码均为:adminAP默认IP地址为:192.168.1.10AP默认情况下DHCP开启AP静态地址配置:setmanagementstatic-ip192.168.10.1AP开启/关闭DHCP功能:setmanagementdhcp-statusup/downAP设置默认网关:setstatic-ip-routegeteway192.168.10.254查看AP基本信息:getsystemgetmanagementgetmanaged-apgetrouteAP配

  7. hadoop安装之保姆级教程(二)之YARN的配置 - 2

    1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模

  8. 牛客网专项练习30天Pytnon篇第02天 - 2

    1.在Python3中,下列关于数学运算结果正确的是:(B)a=10b=3print(a//b)print(a%b)print(a/b)A.3,3,3.3333...B.3,1,3.3333...C.3.3333...,3.3333...,3D.3.3333...,1,3.3333...解析:    在Python中,//表示地板除(向下取整),%表示取余,/表示除(Python2向下取整返回3)2.如下程序Python2会打印多少个数:(D)k=1000whilek>1:    print(k)k=k/2A.1000 B.10C.11D.9解析:    按照题意每次循环K/2,直到K值小于等

  9. Ruby 默认将 IRB 配置为 Pretty_Inspect - 2

    我是ruby​​的新手,正在配置IRB。我喜欢pretty-print(需要'pp'),但总是输入pp来漂亮地打印它似乎很麻烦。我想做的是默认情况下让它漂亮地打印出来,所以如果我有一个var,比如说,'myvar',然后键入myvar,它会自动调用pretty_inspect而不是常规检查。我从哪里开始?理想情况下,我将能够向我的.irbrc文件添加一个自动调用的方法。有什么想法吗?谢谢! 最佳答案 irb中默认pretty-print对象正是hirb被迫去做。Theseposts解释hirb如何将几乎所有内容转换为ascii表。虽

  10. ruby - 是否可以将 IRB 提示配置为动态更改? - 2

    我想在IRB中浏览文件系统并让提示更改以反射(reflect)当前工作目录,但我不知道如何在每个命令后进行提示更新。最终,我想在日常工作中更多地使用IRB,让bash溜走。我在我的.irbrc中试过这个:require'fileutils'includeFileUtilsIRB.conf[:PROMPT][:CUSTOM]={:PROMPT_N=>"\e[1m:\e[m",:PROMPT_I=>"\e[1m#{pwd}>\e[m",:PROMPT_S=>"FOO",:PROMPT_C=>"\e[1m#{pwd}>\e[m",:RETURN=>""}IRB.conf[:PROMPT_MO

随机推荐