python скрипт для чтения элементов из файла в json объекты - PullRequest
0 голосов
/ 08 января 2020

У меня есть файл с IP-адресами. Мне нужно go над каждой записью и записать их в json объекты. Мои JSON объекты принимают "ip": "xxxx", "su bnet": "y" и действие в качестве параметров. IP и значения su bnet записываются в файл. Наконец, я использую curl для ПАТЧИРОВКИ этих JSON объектов с помощью вызова API. Любые мысли о том, как я могу добиться этого?

Пример входного файла:

1.1.1.1 / 24 2.2.2.2/16 и так далее

Я получил это далеко. .

import os
import requests
import urllib3

# check if size of file is 0
if os.stat("ip.txt").st_size == 0:
    print('File is empty')
else:
    print('File is not empty')

url = 'https://api.server.com/service/6sxyz/acl/5xUrx/entries'
payload = open("request.json")
head = {'content-type': 'application/json', 'X-Key': 'xxxx'}

with open('ip.txt', 'r') as f:
    for line in f:
        for word in line.split():
           if(len(word)>2):
                ip=word

           else:
                subnet=word
                print(subnet)

        data = {'op': 'create', 'ip': ip,'subnet': subnet}
        r = requests.patch(url, data, headers=head)     

Я получаю эту ошибку.

Traceback (most recent call last):
  File "ip_curl.py", line 13, in <module>
    payload = open("request.json")
IOError: [Errno 2] No such file or directory: 'request.json'

Любые рекомендации?

1 Ответ

0 голосов
/ 09 января 2020

Я свободен от ошибок сейчас. Но вызов PATCH не приводит к требуемому результату.

import os
import requests
import urllib3
import json

# check if size of file is 0
if os.stat("ip.txt").st_size == 0:
    print('File is empty')
else:
    print('File is not empty')

url = 'https://api.server.com/service/6sxyz/acl/5xUrx/entries''

head = {'content-type': 'application/json', 'X-Key': 'xxxx'}

with open('ip.txt', 'r') as f:
    for line in f:
        ip = ""
        subnet = ""
        for word in line.split():
           if(len(word)>2):
                ip=word

           else:
                subnet=word
                print(subnet)

        data = {'op': 'create', 'ip': ip,'subnet': subnet}
        print data
        r = requests.patch(url, data, headers=head)     

Это обязательный curl, который работает независимо от ввода скрипта или файла -

curl -H "X-Key: " -H "Content-type: application/json" -X PATCH https://api.server.com/service/6sxyz/acl/5xUrx/entries' -d '{"entries":[{"op": "create", "ip": "192.168.0.1","subnet": "8"},{"op": "create", "ip": "192.168.0.2", "subnet": "16"}]}'
...