Saya mencari untuk mengotomatiskan sesuatu dengan skrip bash atau python.
Katakanlah saya memiliki file konfigurasi dari perangkat. File config.txt sederhana. Konten bisa seperti ini (file sebenarnya lebih panjang dan memiliki lebih banyak teks):
> cat config.txt
>
> ASA Version 9.1(5)
> !
> terminal width 511
> hostname confidential
> domain-name confidential
> enable password encrypted
> passwd encrypted
> names
> !
> interface GigabitEthernet0/0
> nameif interconnection
> security-level 50
> ip address 1.1.1.1 255.255.255.240 standby 1.1.1.1
> !
> interface GigabitEthernet0/1
> description Trunk
> no nameif
> no security-level
> no ip address
> !
> interface GigabitEthernet0/1.4
> description confidential
> vlan 4
> nameif vlan004_confidential
> security-level 50
> ip address 1.1.1.1 255.255.255.0
> !
> object network confidential
> host 2.2.2.2
> object network confidential2
> host 3.3.3.3
> object network confidential3
> host 4.4.4.4
>!
>access-list vlan65_access_in extended permit object-group confidential any object-group confidential
>access-list vlan65_access_in remark Allow ICMP OK-20131105
>access-list vlan65_access_in extended permit icmp any object vlan48-confidential
>access-list vlan65_access_in remark Allow NTP OK-20131105
>access-list vlan65_access_in extended permit udp any object-group confidential eq ntp
>access-list warehouse_access_in remark Access to confidential
>access-list warehouse_access_in extended permit object-group confidential any object-group confidential
>access-list warehouse_access_in remark Access to DNS srvrs
>access-list warehouse_access_in extended permit ip any object-group DNS_Servers
>access-list warehouse_access_in remark Allow acces to AD
>!
>no pager
>logging enable
>logging timestamp
>logging standby
>logging list SysLogs message 304001
>logging list connections message 302013-302304
>logging list NewConnection message 302303
>logging list NewConnection message 302015
>logging list NewConnection message 302013
>logging list NewConnection message 303002
>logging list Dropped message 106001-106103
>logging list ConfigChange message 111008
>logging list ConfigChange message 111001
>logging list ConfigChange message 111010
>logging buffer-size 1048576
>logging monitor debugging
>logging buffered warnings
>!
>access-group vlan4_access_in in interface vlan004_confidential1
>access-group vlan65_access_in in interface vlan065_confidential2
>access-group vlan66_access_in in interface vlan066_confidential3
>access-group vlan80_access_in in interface vlan080_confidential4
>!
>service-policy global_policy global
>service-policy test interface interconnection
>service-policy imec_intranet_traffic-policy interface vlan065_confidential5
>service-policy imec_intranet_traffic-policy interface vlan066_confidential6
>service-policy imec_intranet_traffic-policy interface vlan080_confidential7
>service-policy imec_intranet_traffic-policy interface vlan082_confidential8
>service-policy imec_intranet_traffic-policy interface vlan083_confidential9
>!
>: end
File kedua saya adalah daftar (list.txt). Dan konten dan tata letaknya kira-kira seperti ini (di notepad ++):
list.txt
>username full name employid group left comp on
>----------------------------------------------------------------------------------
>test16 confidential1 00014241 zzzz1 19-08-2017
>test38 confidential2 00014223 zzzz2 12-08-2017
>test47 confidential3 00013986 zzzz3 06-07-2017
>test85 confidential4 00013923 zzzz4 16-07-2017
Apakah mungkin menjalankan skrip yang mengambil setiap kata di kolom "nama pengguna" dan "nama lengkap" di file list.txt dan memeriksa apakah ada kecocokan dalam file config.txt? Akan lebih bagus untuk memiliki output dari skrip di file ketiga yang menyebutkan kata apa (di sini nama pengguna atau nama lengkap) ditemukan di file config.txt dan di mana.
Katakanlah saya ingin tahu apakah test38 ada di dalam file config.txt? Saya sekarang dapat dengan mudah melakukan grep, tetapi file list.txt saya memiliki sekitar 100 pengguna. Saya tidak ingin mencapai 100 kali. Selain itu, saya akan mendapatkan lebih banyak daftar di masa depan.
grep -f
file dengan kata-kata untuk mencari, bisa jadigrep -FnH -f <( sed -nr 's/^>([[:alnum:]]+) +([[:alnum:]]+).*/\1\n\2/p' list.txt ) config.txt
.Jawaban:
Berikut adalah skrip perl yang melakukan pekerjaan, (sejauh yang saya mengerti):
outputfile untuk contoh yang diberikan
sumber
$users{$user} = $name ;
ke$users{$user} = $name if $user and $name;
, lihat edit saya.Menurut pemahaman pribadi saya tentang permintaan Anda, saya menggunakan perintah
while
dan perintah builtinawk
untuk menyelesaikannya.langsung menghasilkan
tulis output ke file
output.txt
format output adalah
Hasil keluaran
sumber