小编Syn*_*ons的帖子

关于节点的Ansible信息写入本地csv文件

我编写了一个Ansible脚本,该脚本从各种来源返回了一些信息。在任务执行期间我要保存在变量中的变量之一是某个mysql数据库表中的记录数。

我可以很好地在剧本中打印结果。但是,我要做的是将所有主机的结果写在运行剧本的主/控制服务器或计算机上的单个(csv)文件中

  - name: Show results
    debug:
    msg: "URL: {{hostvars[inventory_hostname]['ansible_nodename']}} RECORDCOUNT: {{results.stdout}} BASE VERSION: {{baseversion.stdout}}"
Run Code Online (Sandbox Code Playgroud)

这部分打印了我想要的20个节点的信息。我现在想将此行写在主服务器上的单个文件中。(csv)

我已经尝试过使用本地副本进行各种操作,但直到现在都无济于事

python csv logging ansible

5
推荐指数
1
解决办法
4259
查看次数

等到其他python脚本结束

我有一个python脚本...基本上调用另一个python脚本.在其他python脚本中,它产生了一些线程...如何让调用脚本等到被调用脚本完全运行完毕?

这是我的代码:

while(len(mProfiles) < num):
        print distro + " " + str(len(mProfiles))
        mod_scanProfiles.main(distro)
        time.sleep(180)
        mProfiles = readProfiles(mFile,num,distro)
        print "yoyo"
Run Code Online (Sandbox Code Playgroud)

我该怎么做,,,等到mod_scanProfiles.main()和所有线程完全完成?(我现在使用time.sleep(180)但它不是很好的编程习惯)

python subprocess module system

4
推荐指数
1
解决办法
2443
查看次数

填充数组的通用方法

我正在学习java for school,主题是通用方法.我需要编写一个具有通用方法的应用程序来"填充"具有相同元素的任何类型的数组.但它没有用......任何人都可以帮助我:

package pack.switchshift;
import java.lang.reflect.Array;

public class Filler {

    public static void main(String [] args) {
        int[] intArr = new int[10];
        String[] stringArr = new String[10];
        double[] doubleArr = new double[10];

        genFill(intArr, 0);
        genFill(stringArr, "0");
        genFill(doubleArr, 0.0);

        for (int element : intArr){
            System.out.print(element);
        }
    }

    private static <T> void genFill(T[] arr, T element) {
        for (int i = 0; i < arr.length; i++) {
            arr[i] = element;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了多种方法并花了几个小时进行研究,但我仍然没有得到它.

线程"main"中的异常java.lang.Error:未解决的编译问题:类型中
的方法不适用于参数类型中 的方法不适用于pack.switchshift.Filler.main(Filler.java)中的参数:11)genFill(T[], T)Filler(int[], …

java arrays generics

2
推荐指数
1
解决办法
1471
查看次数

Java Formatter输出

格式化程序只在关闭流时才会写出来吗?

码:

public void save(String content, String filename) {
    if(filename!=""){
        setFileName(filename);
        try {
            output = new Formatter(new File(fileName));
            output.format("%s",content);
        } catch (FormatterClosedException ex){
            System.err.println("Error writing to file");
            return;
        } catch ( NoSuchElementException ex){
            System.err.println("invalid input");
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally {
            output.close();
        }
Run Code Online (Sandbox Code Playgroud)

起初我忘了用output.close()添加finally块,当调用该方法时,它不会写任何东西.那么格式化程序在关闭流时只实际写入其内容是否正确?

java formatter

2
推荐指数
1
解决办法
229
查看次数

Ansible跳过无法访问的主机

您好,我编写了一个脚本来ping我的所有清单主机。VPN服务背后有一些服务,因此在对它们进行ping操作之前,我先建立了一条隧道。

这可以正常工作,但是,如果建立了隧道,但可听见的ping不能成功完成整个播放,只是暂停并且后续的任何任务都没有执行(隧道没有关闭/无法到达主机的其余任务没有执行)

我如何才能继续播放并跳过无法访问的主机?我看过“ meta clear_host_errors”,但事实并非如此。

这是我的剧本

- hosts:
    - liveservers-direct
    - liveservers-special
    - liveservers-keypair
    - testservers-direct
    - testservers-special
    - testservers-keypair
    - intern
  gather_facts: no
  strategy: debug
  become: no
  tasks:
  - name: Ping some servers
    ping:


- hosts:
    - liveservers-vpn
    - testservers-vpn
  strategy: debug
  gather_facts: no
  become: no
  serial: 1
  vars_files:
   - ../roles/vpn/vars/customers.yml
  tasks:
  - include: ../roles/vpn/tasks/connect.yml icao="{{hostvars[inventory_hostname]['icao']}}"
  - ping:
  - name:
    meta: clear_host_errors
  - include: ../roles/vpn/tasks/disconnect.yml icao="{{hostvars[inventory_hostname]['icao']}}"
Run Code Online (Sandbox Code Playgroud)

致命的:[server.behind.vpn]:莫名其妙!=> {“已更改”:false,“ msg”:“无法通过ssh连接到主机:ssh:连接到主机10.xx.xx.xx端口22:连接超时\ r \ n”,“无法访问” :true}

上面的错误发生在“ ping”上,如何使它跳过故障并仅继续处理其余主机?当播放器到达无法访问的主机时,播放器现在停止了,但是还需要检查一些

python error-handling ping ansible

0
推荐指数
1
解决办法
6466
查看次数