语法错误:解析时出现意外的EOF-使用CSV文件创建F5 VIP

时间:2017-11-07 08:25:51

标签: python csv urllib2 big-ip

我能够与f5框进行通信,并使用一些基本配置文件创建名为(virtual = VIP = Virtual server)的单个对象。

工作代码:

from f5.bigip import ManagementRoot
import urllib3
import csv
import sys
import os
urllib3.disable_warnings()
mgmt = ManagementRoot('13.126.189.103','admin','admin')
ltm = mgmt.tm.ltm
virtuals = mgmt.tm.ltm.virtuals
virtual = mgmt.tm.ltm.virtuals.virtual


def configureVirtuals(bigip, virtualFile):
  # These are the fields in the file. The purpose of each field is obvious. See. Input from CSV file called 'virtualFile' and each row has config
details
  # the BIG-IP iControl REST API for more information.
  fieldNames = ["name", "description", "ip", "port"]
  virtualReader = csv.DictReader(virtualFile, fieldnames=fieldNames,
                  delimiter=",")


# Create a virtual server, one per line. it will take input from CSV file by row one by one
  try: 
    for row in virtualReader: 
      myvirtual = mgmt.tm.ltm.virtuals.virtual.create(name=row["name"],
                  description=row["description"], 
                  destination="%s:%s" % (row["ip"], row["port"])

我的要求是,我将从CSV文件中输入,可能是100个VIP。 上述语法必须在导入的CSV文件中逐行运行。

var canvas = document.getElementById("myCanvas");
var width = 1920;
var height = 1080;

var totalImages = 50;
var videoFrames = [];
for (var i = 1; i <= totalImages; i++) {
  var img = new Image;
  var videoFrameUrl = 'https://the-faction.squarespace.com/assets/chalet-lightmix-01/Chalet-V06_LM_' + i + '.jpg';
  img.src = videoFrameUrl;
  videoFrames.push(img);
}

$("#my-input").on("input", function(event) {
  var currentImage = videoFrames[event.target.value - 1];
  var ctx = canvas.getContext("2d");
  ctx.drawImage(currentImage, 0, 0, canvas.width, canvas.height);
});

我在解析时收到错误意外的EOF 我是f5工程师,也是python的新手。 构建批量更改的应用程序。

任何人请帮帮我?

1 个答案:

答案 0 :(得分:0)

首先,你忘记了一个结束括号。第二个问题是try块,它没有except。如果您使用try,则必须捕获异常,否则您根本不需要try。所以要么不要使用try

from f5.bigip import ManagementRoot
import urllib3
import csv
import sys
import os
urllib3.disable_warnings()
mgmt = ManagementRoot('13.126.189.103','admin','admin')
ltm = mgmt.tm.ltm
virtuals = mgmt.tm.ltm.virtuals
virtual = mgmt.tm.ltm.virtuals.virtual


def configureVirtuals(bigip, virtualFile):
  # These are the fields in the file. The purpose of each field is obvious. See. Input from CSV file called 'virtualFile' and each row has config details
  # the BIG-IP iControl REST API for more information.
  fieldNames = ["name", "description", "ip", "port"]
  virtualReader = csv.DictReader(virtualFile, fieldnames=fieldNames,
                  delimiter=",")


  # Create a virtual server, one per line. it will take input from CSV file by row one by one
  for row in virtualReader: 
    myvirtual = mgmt.tm.ltm.virtuals.virtual.create(
      name=row["name"],
      description=row["description"], 
      destination="%s:%s" % (row["ip"], row["port"])) # pay attention to brackets

如果你知道你期望哪一个以及如何处理它,那么就抓住一个例外

from f5.bigip import ManagementRoot
import urllib3
import csv
import sys
import os
urllib3.disable_warnings()
mgmt = ManagementRoot('13.126.189.103','admin','admin')
ltm = mgmt.tm.ltm
virtuals = mgmt.tm.ltm.virtuals
virtual = mgmt.tm.ltm.virtuals.virtual


def configureVirtuals(bigip, virtualFile):
  # These are the fields in the file. The purpose of each field is obvious. See. Input from CSV file called 'virtualFile' and each row has config details
  # the BIG-IP iControl REST API for more information.
  fieldNames = ["name", "description", "ip", "port"]
  virtualReader = csv.DictReader(virtualFile, fieldnames=fieldNames,
                  delimiter=",")


  # Create a virtual server, one per line. it will take input from CSV file by row one by one

  try:
    for row in virtualReader: 
      myvirtual = mgmt.tm.ltm.virtuals.virtual.create(
        name=row["name"],
        description=row["description"], 
        destination="%s:%s" % (row["ip"], row["port"])) # pay attention to brackets
  except SpecificExceptionType:
    print('Print some instruction or log an error and continue the flow')