- 论坛徽章:
- 0
|
目前下面的awk脚本基本满足了我的需求
ssh登录log里可能会存在同时登录导致日志是相互叠加的。
还有就是 sshd[xxxxx]的session id (我自己叫的)在一天的log里可能会重复。- {
- if( $0 ~ /Found matching/ ) {
- if ( FINGERPRINT[$5] != $13 && USER[$5]!="" && USER[$5]!="root" )
- { print USER[$5],IP[$5],FINGERPRINT[$5],TYPE[$5] }
- FINGERPRINT[$5]=$13
- }
- else if ( $0 ~ /Accepted publickey/ )
- { USER[$5]=$12;IP[$5]=$14;TYPE[$5]="ssh" }
- else if ( $0 ~ /subsystem request for sftp/ && USER[$5] !="" )
- { TYPE[$5]="sftp" }
- }
- END {
- for ( SSHDSESSION in USER ){
- if ( USER[SSHDSESSION]!="" && USER[SSHDSESSION] !="root" )
- print USER[SSHDSESSION],IP[SSHDSESSION],FINGERPRINT[SSHDSESSION],TYPE[SSHDSESSION]
- }
- }
复制代码 不过我对awk内的数组使用还有些疑问:(awk没法调试,所以都是打print来看的)
如果我在END外对 USER[sshd[xxxx]]做了判断,这里原来sshd[xxxx]为下标的元素是没有的,这样会导致加个下标为 sshd[xxxx]的元素到USER数组么?
虽然自觉告诉我不会,但是我调试一个问题时表现好像这样的。 |
|