1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
|
varnishtest "Health-checks"
feature ignore_unknown_macro
#REQUIRE_VERSION=2.4
#EXCLUDE_TARGETS=freebsd,osx,generic
#REGTEST_TYPE=slow
# This script start 40 servers named s0 up to s39.
# For 0 <= i <= 19:
# - s(i) and s(i+1) belong to backend be(2*i+1),
# - fe(2*i+1) backend is configured to used be(2*i+1) backend.
# - only s(2*i+1) servers have health-checks enabled,
# - we start 20 clients named s(2*i+1) which connect to fe(2*i+1) frontend,
# - so that to ensure that health-checks do not consume any connection
# (any varnishtest server without -repeat <n> with n > 1 accepts
# only one connection).
# - we take care of sending the clients to the unchecked servers using the
# "first" lb algo so that servers always receive a valid request
syslog S1 -level notice {
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be1/srv1 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start
syslog S3 -level notice {
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be3/srv3 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start
syslog S5 -level notice {
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be5/srv5 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start
syslog S7 -level notice {
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be7/srv7 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start
syslog S9 -level notice {
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be9/srv9 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start
syslog S11 -level notice {
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be11/srv11 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start
syslog S13 -level notice {
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be13/srv13 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start
syslog S15 -level notice {
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be15/srv15 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start
syslog S17 -level notice {
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be17/srv17 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start
syslog S19 -level notice {
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be19/srv19 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start
syslog S21 -level notice {
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be21/srv21 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start
syslog S23 -level notice {
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be23/srv23 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start
syslog S25 -level notice {
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be25/srv25 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start
syslog S27 -level notice {
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be27/srv27 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start
syslog S29 -level notice {
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be29/srv29 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start
syslog S31 -level notice {
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be31/srv31 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start
syslog S33 -level notice {
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be33/srv33 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start
syslog S35 -level notice {
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be35/srv35 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start
syslog S37 -level notice {
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be37/srv37 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start
syslog S39 -level notice {
recv
expect ~ "[^:\\[ ]\\[${h1_pid}\\]: Health check for server be39/srv39 succeeded, reason: Layer4 check passed, check duration: [[:digit:]]+ms, status: 1/1 UP"
} -start
server s0 {
rxreq
txresp
} -start
server s2 {
rxreq
txresp
} -start
server s4 {
rxreq
txresp
} -start
server s6 {
rxreq
txresp
} -start
server s8 {
rxreq
txresp
} -start
server s10 {
rxreq
txresp
} -start
server s12 {
rxreq
txresp
} -start
server s14 {
rxreq
txresp
} -start
server s16 {
rxreq
txresp
} -start
server s18 {
rxreq
txresp
} -start
server s20 {
rxreq
txresp
} -start
server s22 {
rxreq
txresp
} -start
server s24 {
rxreq
txresp
} -start
server s26 {
rxreq
txresp
} -start
server s28 {
rxreq
txresp
} -start
server s30 {
rxreq
txresp
} -start
server s32 {
rxreq
txresp
} -start
server s34 {
rxreq
txresp
} -start
server s36 {
rxreq
txresp
} -start
server s38 {
rxreq
txresp
} -start
server s1 {} -start
server s3 {} -start
server s5 {} -start
server s7 {} -start
server s9 {} -start
server s11 {} -start
server s13 {} -start
server s15 {} -start
server s17 {} -start
server s19 {} -start
server s21 {} -start
server s23 {} -start
server s25 {} -start
server s27 {} -start
server s29 {} -start
server s31 {} -start
server s33 {} -start
server s35 {} -start
server s37 {} -start
server s39 {} -start
haproxy h1 -conf {
defaults
timeout client "${HAPROXY_TEST_TIMEOUT-5s}"
timeout server "${HAPROXY_TEST_TIMEOUT-5s}"
timeout connect "${HAPROXY_TEST_TIMEOUT-5s}"
balance first
default-server no-check inter 20ms downinter 1s rise 1 fall 1
backend be1
option log-health-checks
log ${S1_addr}:${S1_port} daemon
server srv0 ${s0_addr}:${s0_port}
server srv1 ${s1_addr}:${s1_port} check
backend be3
option log-health-checks
log ${S3_addr}:${S3_port} daemon
server srv2 ${s2_addr}:${s2_port}
server srv3 ${s3_addr}:${s3_port} check
backend be5
option log-health-checks
log ${S5_addr}:${S5_port} daemon
server srv4 ${s4_addr}:${s4_port}
server srv5 ${s5_addr}:${s5_port} check
backend be7
option log-health-checks
log ${S7_addr}:${S7_port} daemon
server srv6 ${s6_addr}:${s6_port}
server srv7 ${s7_addr}:${s7_port} check
backend be9
option log-health-checks
log ${S9_addr}:${S9_port} daemon
server srv8 ${s8_addr}:${s8_port}
server srv9 ${s9_addr}:${s9_port} check
backend be11
option log-health-checks
log ${S11_addr}:${S11_port} daemon
server srv10 ${s10_addr}:${s10_port}
server srv11 ${s11_addr}:${s11_port} check
backend be13
option log-health-checks
log ${S13_addr}:${S13_port} daemon
server srv12 ${s12_addr}:${s12_port}
server srv13 ${s13_addr}:${s13_port} check
backend be15
option log-health-checks
log ${S15_addr}:${S15_port} daemon
server srv14 ${s14_addr}:${s14_port}
server srv15 ${s15_addr}:${s15_port} check
backend be17
option log-health-checks
log ${S17_addr}:${S17_port} daemon
server srv16 ${s16_addr}:${s16_port}
server srv17 ${s17_addr}:${s17_port} check
backend be19
option log-health-checks
log ${S19_addr}:${S19_port} daemon
server srv18 ${s18_addr}:${s18_port}
server srv19 ${s19_addr}:${s19_port} check
backend be21
option log-health-checks
log ${S21_addr}:${S21_port} daemon
server srv20 ${s20_addr}:${s20_port}
server srv21 ${s21_addr}:${s21_port} check
backend be23
option log-health-checks
log ${S23_addr}:${S23_port} daemon
server srv22 ${s22_addr}:${s22_port}
server srv23 ${s23_addr}:${s23_port} check
backend be25
option log-health-checks
log ${S25_addr}:${S25_port} daemon
server srv24 ${s24_addr}:${s24_port}
server srv25 ${s25_addr}:${s25_port} check
backend be27
option log-health-checks
log ${S27_addr}:${S27_port} daemon
server srv26 ${s26_addr}:${s26_port}
server srv27 ${s27_addr}:${s27_port} check
backend be29
option log-health-checks
log ${S29_addr}:${S29_port} daemon
server srv28 ${s28_addr}:${s28_port}
server srv29 ${s29_addr}:${s29_port} check
backend be31
option log-health-checks
log ${S31_addr}:${S31_port} daemon
server srv30 ${s30_addr}:${s30_port}
server srv31 ${s31_addr}:${s31_port} check
backend be33
option log-health-checks
log ${S33_addr}:${S33_port} daemon
server srv32 ${s32_addr}:${s32_port}
server srv33 ${s33_addr}:${s33_port} check
backend be35
option log-health-checks
log ${S35_addr}:${S35_port} daemon
server srv34 ${s34_addr}:${s34_port}
server srv35 ${s35_addr}:${s35_port} check
backend be37
option log-health-checks
log ${S37_addr}:${S37_port} daemon
server srv36 ${s36_addr}:${s36_port}
server srv37 ${s37_addr}:${s37_port} check
backend be39
option log-health-checks
log ${S39_addr}:${S39_port} daemon
server srv38 ${s38_addr}:${s38_port}
server srv39 ${s39_addr}:${s39_port} check
frontend fe1
bind "fd@${fe1}"
use_backend be1
frontend fe3
bind "fd@${fe3}"
use_backend be3
frontend fe5
bind "fd@${fe5}"
use_backend be5
frontend fe7
bind "fd@${fe7}"
use_backend be7
frontend fe9
bind "fd@${fe9}"
use_backend be9
frontend fe11
bind "fd@${fe11}"
use_backend be11
frontend fe13
bind "fd@${fe13}"
use_backend be13
frontend fe15
bind "fd@${fe15}"
use_backend be15
frontend fe17
bind "fd@${fe17}"
use_backend be17
frontend fe19
bind "fd@${fe19}"
use_backend be19
frontend fe21
bind "fd@${fe21}"
use_backend be21
frontend fe23
bind "fd@${fe23}"
use_backend be23
frontend fe25
bind "fd@${fe25}"
use_backend be25
frontend fe27
bind "fd@${fe27}"
use_backend be27
frontend fe29
bind "fd@${fe29}"
use_backend be29
frontend fe31
bind "fd@${fe31}"
use_backend be31
frontend fe33
bind "fd@${fe33}"
use_backend be33
frontend fe35
bind "fd@${fe35}"
use_backend be35
frontend fe37
bind "fd@${fe37}"
use_backend be37
frontend fe39
bind "fd@${fe39}"
use_backend be39
} -start
# This is a sort of synchronization: after having waited for all the syslog
# servers we are sure that all the health-checks have succeeded.
syslog S1 -wait
syslog S3 -wait
syslog S5 -wait
syslog S7 -wait
syslog S9 -wait
syslog S11 -wait
syslog S13 -wait
syslog S15 -wait
syslog S17 -wait
syslog S19 -wait
syslog S21 -wait
syslog S23 -wait
syslog S25 -wait
syslog S27 -wait
syslog S29 -wait
syslog S31 -wait
syslog S33 -wait
syslog S35 -wait
syslog S37 -wait
syslog S39 -wait
client c1 -connect ${h1_fe1_sock} {
txreq
rxresp
expect resp.status == 200
} -start
client c3 -connect ${h1_fe3_sock} {
txreq
rxresp
expect resp.status == 200
} -start
client c5 -connect ${h1_fe5_sock} {
txreq
rxresp
expect resp.status == 200
} -start
client c7 -connect ${h1_fe7_sock} {
txreq
rxresp
expect resp.status == 200
} -start
client c9 -connect ${h1_fe9_sock} {
txreq
rxresp
expect resp.status == 200
} -start
client c11 -connect ${h1_fe11_sock} {
txreq
rxresp
expect resp.status == 200
} -start
client c13 -connect ${h1_fe13_sock} {
txreq
rxresp
expect resp.status == 200
} -start
client c15 -connect ${h1_fe15_sock} {
txreq
rxresp
expect resp.status == 200
} -start
client c17 -connect ${h1_fe17_sock} {
txreq
rxresp
expect resp.status == 200
} -start
client c19 -connect ${h1_fe19_sock} {
txreq
rxresp
expect resp.status == 200
} -start
client c21 -connect ${h1_fe21_sock} {
txreq
rxresp
expect resp.status == 200
} -start
client c23 -connect ${h1_fe23_sock} {
txreq
rxresp
expect resp.status == 200
} -start
client c25 -connect ${h1_fe25_sock} {
txreq
rxresp
expect resp.status == 200
} -start
client c27 -connect ${h1_fe27_sock} {
txreq
rxresp
expect resp.status == 200
} -start
client c29 -connect ${h1_fe29_sock} {
txreq
rxresp
expect resp.status == 200
} -start
client c31 -connect ${h1_fe31_sock} {
txreq
rxresp
expect resp.status == 200
} -start
client c33 -connect ${h1_fe33_sock} {
txreq
rxresp
expect resp.status == 200
} -start
client c35 -connect ${h1_fe35_sock} {
txreq
rxresp
expect resp.status == 200
} -start
client c37 -connect ${h1_fe37_sock} {
txreq
rxresp
expect resp.status == 200
} -start
client c39 -connect ${h1_fe39_sock} {
txreq
rxresp
expect resp.status == 200
} -start
client c1 -wait
client c3 -wait
client c5 -wait
client c7 -wait
client c9 -wait
client c11 -wait
client c13 -wait
client c15 -wait
client c17 -wait
client c19 -wait
client c21 -wait
client c23 -wait
client c25 -wait
client c27 -wait
client c29 -wait
client c31 -wait
client c33 -wait
client c35 -wait
client c37 -wait
client c39 -wait
server s0 -wait
server s2 -wait
server s4 -wait
server s6 -wait
server s8 -wait
server s10 -wait
server s12 -wait
server s14 -wait
server s16 -wait
server s18 -wait
server s20 -wait
server s22 -wait
server s24 -wait
server s26 -wait
server s28 -wait
server s30 -wait
server s32 -wait
server s34 -wait
server s36 -wait
server s38 -wait
haproxy h1 -cli {
send "show servers state"
# output produced using the command below (warning, a bug inserts a "be0" every other line:
# for ((i=0;i<40;i++)); do id=$((i/2+2)); be=$((i|1)); si=$(((i&1)+1));
# if ((i&1)); then chk="6 ([[:digit:]]+ ){3}"; else chk="1 0 1 0 ";fi;
# printf "%d be%d %d srv%d \${s%d_addr} 2 0 1 1 [[:digit:]]+ %s0 0 0 - \${s%d_port} - 0 0 - - 0\n" "$id" "$be" "$si" "$i" "$i" "$chk" "$i" "$i" ;
# done|grep -v be0|sed 's,$,\\n,'| tr -d '\n'
expect ~ "# be_id be_name srv_id srv_name srv_addr srv_op_state srv_admin_state srv_uweight srv_iweight srv_time_since_last_change srv_check_status srv_check_result srv_check_health srv_check_state srv_agent_state bk_f_forced_id srv_f_forced_id srv_fqdn srv_port srvrecord srv_use_ssl srv_check_port srv_check_addr srv_agent_addr srv_agent_port\n2 be1 1 srv0 ${s0_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s0_port} - 0 0 - - 0\n2 be1 2 srv1 ${s1_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s1_port} - 0 0 - - 0\n3 be3 1 srv2 ${s2_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s2_port} - 0 0 - - 0\n3 be3 2 srv3 ${s3_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s3_port} - 0 0 - - 0\n4 be5 1 srv4 ${s4_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s4_port} - 0 0 - - 0\n4 be5 2 srv5 ${s5_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s5_port} - 0 0 - - 0\n5 be7 1 srv6 ${s6_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s6_port} - 0 0 - - 0\n5 be7 2 srv7 ${s7_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s7_port} - 0 0 - - 0\n6 be9 1 srv8 ${s8_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s8_port} - 0 0 - - 0\n6 be9 2 srv9 ${s9_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s9_port} - 0 0 - - 0\n7 be11 1 srv10 ${s10_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s10_port} - 0 0 - - 0\n7 be11 2 srv11 ${s11_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s11_port} - 0 0 - - 0\n8 be13 1 srv12 ${s12_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s12_port} - 0 0 - - 0\n8 be13 2 srv13 ${s13_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s13_port} - 0 0 - - 0\n9 be15 1 srv14 ${s14_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s14_port} - 0 0 - - 0\n9 be15 2 srv15 ${s15_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s15_port} - 0 0 - - 0\n10 be17 1 srv16 ${s16_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s16_port} - 0 0 - - 0\n10 be17 2 srv17 ${s17_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s17_port} - 0 0 - - 0\n11 be19 1 srv18 ${s18_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s18_port} - 0 0 - - 0\n11 be19 2 srv19 ${s19_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s19_port} - 0 0 - - 0\n12 be21 1 srv20 ${s20_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s20_port} - 0 0 - - 0\n12 be21 2 srv21 ${s21_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s21_port} - 0 0 - - 0\n13 be23 1 srv22 ${s22_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s22_port} - 0 0 - - 0\n13 be23 2 srv23 ${s23_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s23_port} - 0 0 - - 0\n14 be25 1 srv24 ${s24_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s24_port} - 0 0 - - 0\n14 be25 2 srv25 ${s25_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s25_port} - 0 0 - - 0\n15 be27 1 srv26 ${s26_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s26_port} - 0 0 - - 0\n15 be27 2 srv27 ${s27_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s27_port} - 0 0 - - 0\n16 be29 1 srv28 ${s28_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s28_port} - 0 0 - - 0\n16 be29 2 srv29 ${s29_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s29_port} - 0 0 - - 0\n17 be31 1 srv30 ${s30_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s30_port} - 0 0 - - 0\n17 be31 2 srv31 ${s31_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s31_port} - 0 0 - - 0\n18 be33 1 srv32 ${s32_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s32_port} - 0 0 - - 0\n18 be33 2 srv33 ${s33_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s33_port} - 0 0 - - 0\n19 be35 1 srv34 ${s34_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s34_port} - 0 0 - - 0\n19 be35 2 srv35 ${s35_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s35_port} - 0 0 - - 0\n20 be37 1 srv36 ${s36_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s36_port} - 0 0 - - 0\n20 be37 2 srv37 ${s37_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s37_port} - 0 0 - - 0\n21 be39 1 srv38 ${s38_addr} 2 0 1 1 [[:digit:]]+ 1 0 1 0 0 0 0 - ${s38_port} - 0 0 - - 0\n21 be39 2 srv39 ${s39_addr} 2 0 1 1 [[:digit:]]+ 6 ([[:digit:]]+ ){3}0 0 0 - ${s39_port} - 0 0 - - 0\n"
}
|