将一个UAML字段的多个值解析为一个列表,并在GOLANG中对其进行迭代



我有以下yaml文件:

nodes: ["1.1.1.1","127.0.0.1","2.2.2.2"]
emailto: ["sample@sample.com","sample@sample.com"]

我想打开YAML文件,一个接一个地迭代IP,并执行某些操作。如果出现错误,那么它应该自动获取下一个ip并执行相同的功能。我遇到了如何将IP保存到列表或如何在GOLANG中迭代的问题。

此外,我必须根据YAML文件中的电子邮件ID发送一封电子邮件。GO中的哪个包用于此目的,以及如何像Python中的SMTPLIB一样进行此操作。

您的问题似乎有三个部分:

1.YAML解析见gopkg.in/yaml.v2

import (
// ...
"gopkg.in/yaml.v2"
)
type Doc struct {
Nodes  []string `yaml:"nodes"`
Emails []string `yaml:"emailto"`
}
// Parse the YAML document.
doc := Doc{}
err := yaml.Unmarshal(yamlbytes, &doc)
if err != nil {
log.Fatalf("FATAL: could not parse YAML file: %s", err)
}

2.使用range迭代、调用函数和处理错误的示例

// Iterate over each node and do something, handling errors as needed.
for _, node := range doc.Nodes {
err := DoSomethingWithNode(node)
if err != nil {
log.Printf("ERROR: failed to handle node %q: %s", node, err)
} else {
log.Printf("OK: successfully handled node %q.", node)
}
}

3.发送电子邮件请参阅内置的net/smtp

有关完整的图示,请参阅软件包示例。

最新更新