我编写了一个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脚本...基本上调用另一个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)但它不是很好的编程习惯)
我正在学习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[], …
格式化程序只在关闭流时才会写出来吗?
码:
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块,当调用该方法时,它不会写任何东西.那么格式化程序在关闭流时只实际写入其内容是否正确?
您好,我编写了一个脚本来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”上,如何使它跳过故障并仅继续处理其余主机?当播放器到达无法访问的主机时,播放器现在停止了,但是还需要检查一些