我有一个文本文件,其中有一个服务器列表.我正在尝试从文件中逐个读取服务器,SSH在服务器中执行ls以查看目录内容.当我运行SSH命令时,我的循环只运行一次,但是,因为SCP它运行文本文件中的所有服务器并退出,我希望循环运行直到SSH的文本文件结束.以下是我的bash脚本,如何在运行时为文本文件中的所有服务器运行SSH?
#!/bin/bash
while read line
do
name=$line
ssh abc_def@$line "hostname; ls;"
# scp /home/zahaib/nodes/fpl_* abc_def@$line:/home/abc_def/
done < $1
Run Code Online (Sandbox Code Playgroud)
我把脚本作为 $ ./script.sh hostnames.txt
我的文件中包含CDF的数据,如下所示:
0.033 0.0010718113612
0.034 0.0016077170418
0.038 0.0021436227224
... ...
... ...
0.847 0.999464094319
0.862 1.0
Run Code Online (Sandbox Code Playgroud)
第一列是X轴值,第二列是Y轴上的CDF值。我将线条样式设置如下:
set style line 1 lc rgb 'blue' lt 1 lw 2 pt 7 ps 0.75 # --- blue
Run Code Online (Sandbox Code Playgroud)
然后用以下内容绘制线:
plot file1 using 1:2 title 'Test Line CDF' with linespoints ls 1
Run Code Online (Sandbox Code Playgroud)
一切正常,问题似乎是我的CDF文件很大(大约250行),Gnuplot会为每个数据点绘制标记/点(在这种情况下为圆)。由于标记的浓度过高,因此这导致一条非常“密集”的线,因此下面的示例图片中显示了下面的线几乎不可见:

我如何有选择地绘制标记,以便代替在所有数据点上绘制它们,而在每50个数据点后绘制它们,而不必减少数据点的数量(我相信这是"every n"plot命令的工作)。我的数据文件还是减小标记大小?
我有一个客户端和服务器,客户端运行一个select循环以在TCP和UDP连接之间进行多路复用。我正在尝试将我的TCP连接文件描述符同时添加到read和write集中,然后使用writeset和1使用readset 发起一个消息交换。我与设备的消息通信write正常,但与read设备无法通信。
客户代码:
char buf[256] = {};
char buf_to_send[256] = {};
int nfds, sd, r;
fd_set rd, wr;
int connect_init = 1;
/* I do the Connect Command here */
FD_ZERO(&rd);
FD_ZERO(&wr);
FD_SET(sd, &rd);
FD_SET(sd, &wr);
nfds = sd;
for(; ;){
r = select(nfds + 1, &rd, &wr, NULL, NULL);
if(connect_init == 0){
if(FD_ISSET(sd, &rd)){ // this is not working, if I change rd to wr, …Run Code Online (Sandbox Code Playgroud) 我有以下代码,我正在尝试通过分叉创建子进程.我希望确实有3个子流程.然而,当我运行代码时,我似乎变得越来越多,可能是因为孩子们处理分叉孙子.我在这里想念的是什么,我该如何防止这种情况发生.
码:
for(j = 0; j < 3 ; j++){
if((pid = fork()) == 0){ // child process
dosomething();
exit(0); // terminate child process
}
else if((pid = fork()) > 0){
printf("I'm in parent of the client spawn loop\n");
// exit(0);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
I'm in parent of the client spawn loop
I'm in parent of the client spawn loop
I'm in parent of the client spawn loop
I'm in parent of the client spawn loop
I'm in parent of …Run Code Online (Sandbox Code Playgroud) 我有以下bash命令,其中我正在使用tcpdump然后使用date命令保存文件.我想直接在Python脚本中嵌入此命令,而不必单独调用bash脚本.
#!/bin/bash
timeout 2 tcpdump -i eth1 -s 96 -w /usr/src/pcapFiles/dump$(date +%y%m%d-%H%M%S).pcap
Run Code Online (Sandbox Code Playgroud)
当我运行上面的脚本时,我得到以下类型的文件名,这正是我需要的(即日期和时间在名称中呈现):
dump131104-191834.pcap
但是,我很难从Python中复制上面的命令.我已经把这个命令嵌入到Python中了.我不确定如何破坏日期命令,以便它可以像我需要的那样呈现文件名.以下是我的Python命令:
tcpd = subprocess.Popen(["timeout", "2", "tcpdump", "-i", "eth1", "-s", "96", "-w", "/usr/src/pcapFiles/dump$(date +%y%m%d-%H%M%S).pcap"], stdout=subprocess.PIPE)
output, err = tcpd.communicate()
Run Code Online (Sandbox Code Playgroud)
使用此命令,我从tcpdump获取以下输出文件名
dump$(date +%y%m%d-%H%M%S).pcap