출력 라인이 있습니다 ipsec statusall <conn_name>
. 트래픽 양에 따라 다음과 같을 수 있습니다.
sr_mesh_aws_22{10}: AES_CBC_256/HMAC_SHA2_256_128/MODP_1024, 0 bytes_i, 0 bytes_o, rekeying in 32 minutes
때때로:
sp_mesh_6_7{8}: AES_CBC_256/HMAC_SHA2_256_128, 336 bytes_i, 336 bytes_o (4 pkts, 15s ago), rekeying disabled
또는:
sr_mesh_aws_21{24}: AES_CBC_256/HMAC_SHA1_96, 59189 bytes_i (469 pkts, 0s ago), 128238 bytes_o (431 pkts, 0s ago), rekeying in 32 minutes
문자열 형식:
conn_name{id}: algorithm, traffic in info, traffic out info, rekeying info
모든 것이 분석하기 쉽지만 트래픽 흐름이 시작되면 traffic in info
또는 traffic out info
사이의 필드 에 추가 정보가 나타납니다 (...)
. 그리고 같은 문자로 구분된 2개의 필드가 있습니다 ,
!
존재하는 경우 모두를 내부 ,
로 바꾸는 방법은 무엇입니까?;
(...)
더 나은 간단한 쉘 도구: sed/awk/...
답변1
보여준 예를 바탕으로 빠른 해킹은 다음과 같습니다.
,
교체 하지 않음(...)
- 하지만 다음
pkts,
으로 대체pkts;
주다:
echo "sr_mesh_aws_21{24}: AES_CBC_256/HMAC_SHA1_96, 59189 bytes_i (469 pkts, 0s ago), 128238 bytes_o (431 pkts, 0s ago), rekeying in 32 minutes" | sed 's/pkts,/pkts;/g'
참고: 이 echo ...
섹션에서는 명령 출력을 시뮬레이션합니다.
답변2
말하지 않은 것처럼 중첩된 괄호가 없으면 다음을 수행합니다 sed
.
sed ':repeat s/\(([^,)]*\),\([^)]*)\)/\1;\2/;t repeat' infile