Forum Discussion
(usefull) config export to csv for partitions
Hello, I wrote a shell script to export the most important config to a csv file. This was inspired from some other posts. The script runs on bash from a LB. For the CSV import to excel, you need to change the column B(named as VIP) to TEXT and enable word-wrap to the hole chart. The script collects field by field from running system. If you have a lot of configuration it can be need some time to finish. You can start with SCRIPTNAME PARTITION > EXPORTcsv direct from bash not tmsh. I hope it helps somebody, Cheers NetSnoopy
- NetSnoopyCirrus
! /bin/bash PARTITION=$1 check if partition parameter set if [ -z "$PARTITION" ] then echo "Argument not present." echo "Useage $0 [PartitionName]" echo "to write a csv file append > FILENAME.csv" exit 99 fi generate csv head line echo \"VS Name\"\;\"VIP\"\;\"Port\"\;\"Client SSL\"\;\"Server SSL\"\;\"Persistence\"\;\"Pool Name\"\;\"Balancing\"\;\"Pool Members Name\"\;\"Pool Members IP\"\;\"Members Port\"\;\"Monitor\"\;\"iRules\" collect vs names VIRTUALS=$(tmsh list /ltm virtual /$PARTITION/* | grep "ltm virtual" | cut -d" " -f3) for VS in $VIRTUALS; collect config parameter for each vs do VSNAME=$(echo $VS| cut -d "/" -f3) echo -n \"$VSNAME\"\; DEST=$(tmsh list /ltm virtual $VS | grep destination | cut -d" " -f6 |cut -d "/" -f3 |cut -d"%" -f1 | cut -d":" -f1 ) echo -n \"$DEST\"\; PORT=$(tmsh list /ltm virtual $VS | grep destination | cut -d" " -f6 |cut -d "/" -f3 | cut -d":" -f2 ) echo -n \"$PORT\"\; collect SAN from all used Certs in clientssl profile SSLPROFILE=$(tmsh list /ltm virtual $VS | grep -B 1 clientside | grep -v clientside|cut -d "/" -f3|cut -d " " -f1 | grep -v "\-\-") echo -n \" if [ -n "$SSLPROFILE" ] then SSLCOUNT=$(tmsh list /ltm virtual $VS | grep -B 1 clientside | grep -v clientside|cut -d "/" -f3|cut -d " " -f1 | grep -v "\-\-" | wc -l ) i=1 for CLIENTSSL in $SSLPROFILE; do CERTNAME=$(tmsh list /ltm profile client-ssl /$PARTITION/$CLIENTSSL | grep -m 1 cert | sed 's/ cert //' | cut -d"/" -f2- | tr -d " " ) if [[ "$CERTNAME" == "$PARTITION"* ]] then DOMAINS=$(tmsh list /sys file ssl-cert /$CERTNAME |grep "subject-alternative-name"| tr -d "\""|tr -s " "| cut -d" " -f3- | tr "DNS:" " "|tr "," "\n" |tr -d " " ) echo -n "$DOMAINS" else DOMAINS=$(tmsh list /sys file ssl-cert /Common/$CERTNAME |grep "subject-alternative-name"| tr -d "\""|tr -s " "| cut -d" " -f3- | tr "DNS:" " "|tr "," "\n" |tr -d " " ) echo -n "$DOMAINS" fi if [ "$i" -lt "$SSLCOUNT" ] then echo fi let "i++" done fi echo -n \"\;\" SERVERSSL=$(tmsh list /ltm virtual $VS | grep -B 1 serverside) check if backend ssl enabled if [[ "$SERVERSSL" == *serverssl* ]] then echo -n ReEncrypt fi echo -n \"\; Persistens PERSISTENCE=$(tmsh list /ltm virtual $VS | grep -A1 persist ) echo -n \" if [ -n "$PERSISTENCE" ] then if [[ "$PERSISTENCE" == *"$PARTITION"* ]] then PERSISTENCE=$(tmsh list /ltm virtual $VS | grep -v "fallback-persistence" | grep -A1 persist | grep -v persist | cut -d"/" -f3 | cut -d" " -f1 ) echo -n $PERSISTENCE else PERSISTENCE=$(tmsh list /ltm virtual $VS | grep -v "fallback-persistence" | grep -A1 persist | grep -v persist | tr -d " " | cut -d "{" -f1 ) echo -n $PERSISTENCE fi get fallback-persistence fbPERSISTENCE=$(tmsh list /ltm virtual $VS | grep "fallback-persistence" | grep -v "type" | awk '{print $2}' ) if [ -n "$fbPERSISTENCE" ] then echo echo -n $fbPERSISTENCE fi fi echo -n \"\; pool informations POOLNAME=$(tmsh list /ltm virtual $VS | grep pool | cut -d" " -f6 | cut -d "/" -f3) echo -n \"$POOLNAME\"\; check if pool present if [ -n "$POOLNAME" ] then collect balancing type BLANCING=$(tmsh list /ltm pool /$PARTITION/$POOLNAME load-balancing-mode | grep "load-balancing-mode" | awk '{print $2}' ) echo -n \"$BLANCING\"\; get pool members IP address POOLMEMEBERS=$(tmsh list /ltm pool /$PARTITION/$POOLNAME | grep address | cut -d" " -f14|cut -d"%" -f1) how many poolmembers PMCOUNT=$(echo "$POOLMEMEBERS" | wc -l ) poolmemeber name POOLMEMEBERSNAME=$(tmsh list /ltm pool /$PARTITION/$POOLNAME | grep ":" | cut -d":" -f1) echo -n \" i=1 for PMN in $POOLMEMEBERSNAME; do if [[ "$PMN" == *"$PARTITION"* ]] then PMNAME=$(echo "$PMN" | cut -d"/" -f3 ) echo -n "$PMNAME" else echo -n "$PMN" fi if [ "$i" -lt "$PMCOUNT" ] then echo fi let "i++" done echo -n \"\;\" i=1 for PM in $POOLMEMEBERS; do echo -n $PM if [ "$i" -lt "$PMCOUNT" ] then echo fi let "i++" done echo -n \"\; collect Member Port MEMEBERSPORT=$(tmsh list /ltm pool /$PARTITION/$POOLNAME | cut -d ":" -f2 |grep -A 1 members |grep '^[0-9a-z]'| cut -d" " -f1) echo -n \"$MEMEBERSPORT\"\; collect Monitor MONITOR=$(tmsh list /ltm pool /$PARTITION/$POOLNAME monitor | grep monitor | tr " " "\n" | grep -v "monitor\|{\|}" | grep -v '^[[:blank:]]*$' ) echo -n \" MONITORCOUNT=$(echo "$MONITOR" | wc -l) i=1 for MO in $MONITOR; do if [[ "$MO" == *"$PARTITION"* ]] then MONI=$(echo "$MO" | cut -d"/" -f3 ) echo -n $MONI else echo -n $MO fi if [ "$i" -lt "$MONITORCOUNT" ] then echo fi let "i++" done echo -n \"\; else echo -n \"\"\;\"\"\;\"\"\;\"\"\;\"\"\; fi collect irules IRULE=$(tmsh list /ltm virtual $VS rules | grep -v "{\|}" | grep -v "rules none" ) echo -n \" IRULECOUNT=$(echo "$IRULE" | wc -l) i=1 for IR in $IRULE; do if [[ "$IR" == *"$PARTITION"* ]] then IRU=$(echo "$IRU" | cut -d"/" -f3 ) echo -n $IRU else echo -n $IR fi if [ "$i" -lt "$IRULECOUNT" ] then echo fi let "i++" done echo -n \"\; end line in csv echo done
- NajimNimbostratus
Hi,
Thanks for sharing. I wondered if you have any scripts similar like this to export things like: SSL, redirects, hosts, headers, health checks, WAF rules, NAT per partition.
Kind regards,
Najim
- NetSnoopyCirrus
Hello Najim,
ssl, redirects(iRule) hosts and health checks are included. But not WAF. If you have a closer view you can easily found the components and modify to what you want. It would be nice if you share your code.
Cheers NetSnoopy
- in another thread mentioned that this codeblock had some missing comment hashtags. I also don't see hashtags at the beginning of comment sections. Based on the age of this snippet - it could have been an error in our ETL efforts during the platform migration.
Can you review this code-block and let me know if you think it was right before we migrated? (So I might look for that pattern in other code-blocks and fix systemically)
Thanks!
Lief
Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com