鱼C论坛

 找回密码
 立即注册
查看: 1914|回复: 11

[已解决]程序需要修改一下循环语句

[复制链接]
发表于 2016-12-7 21:55:27 | 显示全部楼层 |阅读模式
18鱼币
我get出来的SBTS_scf都是一个名字,怎么可以把这个SBTS——scf名字前面添加特殊字符区分开,否则出来的名字都是SBTS_SCF,后面的都把前面的覆盖了
例如:
每一个SBTS_SCF名字之前都顺序加上,10.42.88.1这个名字,然后下一个名字是10.42.88.2这个名字。以此类推,不论hosts后面的IP地址有上千个,也可以批量一条条的顺序执行循环。
        ["GET", ["/rom/config/SBTS_SCF.xml", "SBTS_SCF.xml"]],
        ["FIX_SCF", ["SBTS_SCF.xml", "FIXED_SBTS_SCF.xml"]],
      
    ],
    "hosts": [
        ["10.42.88.1", "SSHUSER", "SSHPASS", "WEBUIUSER", "WEBUIPASS"],
        ["10.42.88.2", "SSHUSER", "SSHPASS", "WEBUIUSER", "WEBUIPASS"]
    ]

我把主要的两个程序文件放在附件的压缩文件里面了,分别是:
config.json和主程序scf_recovery.py 2个文件。
用的是python 2.7的,在windows系统下打开CMD,然后把scf_recovery.py拖进去执行python scf_recovery.py config.json。
最佳答案
2016-12-7 21:55:28
本帖最后由 SixPy 于 2016-12-8 11:21 编辑

python3
  1. >>> import json
  2. >>> from urllib.request import urlopen
  3. >>> from itertools import  product

  4. >>> json_data ='''{
  5.     "task":[
  6.         ["GET", ["/rom/config/SBTS_SCF.xml", "SBTS_SCF.xml"]],
  7.         ["FIX_SCF", ["SBTS_SCF.xml", "FIXED_SBTS_SCF.xml"]]
  8.     ],
  9.     "hosts": [
  10.         ["10.42.88.1", "SSHUSER", "SSHPASS", "WEBUIUSER", "WEBUIPASS"],
  11.         ["10.42.88.2", "SSHUSER", "SSHPASS", "WEBUIUSER", "WEBUIPASS"]
  12.     ]
  13. }'''
  14. >>> j = json.loads(json_data)
  15. >>> for t,h in product(j['task'],j['hosts']):
  16.         mathod,URI = t[0],t[1][0]
  17.         ip,*_ = h
  18.         URL = 'http://' +  ip + URI
  19.         if mathod == 'GET':
  20.                 rsp = urlopen(URL)
  21.                 print(len(rsp.read()))
复制代码

最佳答案

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-7 21:55:28 | 显示全部楼层    本楼为最佳答案   
本帖最后由 SixPy 于 2016-12-8 11:21 编辑

python3
  1. >>> import json
  2. >>> from urllib.request import urlopen
  3. >>> from itertools import  product

  4. >>> json_data ='''{
  5.     "task":[
  6.         ["GET", ["/rom/config/SBTS_SCF.xml", "SBTS_SCF.xml"]],
  7.         ["FIX_SCF", ["SBTS_SCF.xml", "FIXED_SBTS_SCF.xml"]]
  8.     ],
  9.     "hosts": [
  10.         ["10.42.88.1", "SSHUSER", "SSHPASS", "WEBUIUSER", "WEBUIPASS"],
  11.         ["10.42.88.2", "SSHUSER", "SSHPASS", "WEBUIUSER", "WEBUIPASS"]
  12.     ]
  13. }'''
  14. >>> j = json.loads(json_data)
  15. >>> for t,h in product(j['task'],j['hosts']):
  16.         mathod,URI = t[0],t[1][0]
  17.         ip,*_ = h
  18.         URL = 'http://' +  ip + URI
  19.         if mathod == 'GET':
  20.                 rsp = urlopen(URL)
  21.                 print(len(rsp.read()))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-7 22:24:06 | 显示全部楼层
不是很明白你的问题,但是如果是为了提取不特定关键字的话,肯定应该用正则表达式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-7 22:44:58 | 显示全部楼层
jerryxjr1220 发表于 2016-12-7 22:24
不是很明白你的问题,但是如果是为了提取不特定关键字的话,肯定应该用正则表达式

就是说第一次执行:"10.42.88.1", "SSHUSER", "SSHPASS", "WEBUIUSER", "WEBUIPASS"这个之后提取一个GET", ["/rom/config/SBTS_SCF.xml", "SBTS_SCF.xml",前面给他加上一个IP 10.42.88.1。
第二次:执行["10.42.88.2", "SSHUSER", "SSHPASS", "WEBUIUSER", "WEBUIPASS"],之后再提取一个 ["GET", ["/rom/config/SBTS_SCF.xml", "SBTS_SCF.xml"]],前面在给他加一个IP10.42.88.2
如果hosts 后面有几千个,就都执行一遍,重复循环执行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-8 07:57:16 | 显示全部楼层
例如图中我标记红色的
QQ图片20161205222220.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-8 09:43:15 | 显示全部楼层
syj8236234 发表于 2016-12-8 07:57
例如图中我标记红色的

看你返回的值都是列表的形式,列表直接可以键值提取啊,正则都可以免了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-8 11:07:27 | 显示全部楼层
jerryxjr1220 发表于 2016-12-8 09:43
看你返回的值都是列表的形式,列表直接可以键值提取啊,正则都可以免了。

不是的,这个是需要用指令进去提取的,我现在要的是一个循环语句。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-8 14:28:51 | 显示全部楼层

hi
非常感谢,你这个是单独使用的吗?
我是想把这个循环语句加在scf_recovery.py这个程序里面,只是循环执行下面的语句,

        ["10.42.88.1", "SSHUSER", "SSHPASS", "WEBUIUSER", "WEBUIPASS"],
        ["10.42.88.2", "SSHUSER", "SSHPASS", "WEBUIUSER", "WEBUIPASS"]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-8 14:57:13 | 显示全部楼层

hi
scf_recovery.py 这个是主程序,是不是需要把循环语句放在这个里面,然后再去调用config.json。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-8 15:22:36 | 显示全部楼层
只是告诉你该怎么写,认真看例子,别躺在那里做伸手党~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-8 15:24:31 | 显示全部楼层
SixPy 发表于 2016-12-8 15:22
只是告诉你该怎么写,认真看例子,别躺在那里做伸手党~

只是我现在还在入门,我修改了几次,没有成功,所以还是想请教你一下!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-27 10:10:58 | 显示全部楼层
进来学习

嘿嘿
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-18 12:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表