Zum Hauptinhalt springen

Shell Scrips

Manchmal ist es einfacher, ein kurzes Shell-Skript zu schreiben, das die PBX-Datenbank liest und auf dem Bildschirm druckt, oder andere Funktionen damit ausführt. Diese Seite zeigt einige Beispiele für nützliche Funktionen.

MAC Übersicht

Das erste Shell-Skript zeigt, wie die MAC-Adressen auflisten, die Erweiterungen zugewiesen wurden.

#!/bin/bashfunction get_xml(){ if [ -f "$2" ]; then gawk -v tag=$1 'BEGIN{regex="<" tag ">([^<]*)</" tag ">";}{ match($0, regex, m); for(i = 1;; i++) { if(!(i in m)) break; printf("%s\n",m[i]);}}' $2; fi}for mac in macs/*.xmldo name=${user:5} # only the name user=$(get_xml user $mac) adr=$(get_xml adr $mac) alias=$(get_xml alias users/$user.xml) domain=$(get_xml domain users/$user.xml) echo $adr $(get_xml name user_alias/$alias.xml)@$(get_xml name domains/$domain.xml)done

Count-Erweiterungen

Dieses Skript zählt, wie viele Erweiterungen sich in jeder Domäne befinden.

#!/bin/bash# Show the passwords of all users:function get_xml(){ if [ -f "$2" ]; then gawk -v tag=$1 'BEGIN{regex="<" tag ">([^<]*)</" tag ">";}{ match($0, regex, m); for(i = 1;; i++) { if(!(i in m)) break; printf("%s\n",m[i]);}}' $2; fi}for dom in domains/*.xml; do name=${dom:8} # only the name idx=${name%.xml} # only the number dn=$(get_xml name $dom) if [ ! -z "$dn" ]; then count=0; for ext in users/*.xml; do domain=$(get_xml domain $ext) if [ "$domain" == "$idx" ]; then type=$(get_xml type $ext) if [ $type == "extensions" ]; then count=$[$count+1] fi fi done echo $dn $count fidone

E-Mail-Adressen anzeigen

Dieses Skript zeigt die verschiedenen E-Mail-Adressen .

#!/bin/bash# Show the emails of the usersfunction get_xml(){ if [ -f "$2" ]; then gawk -v tag=$1 'BEGIN{regex="<" tag ">([^<]*)</" tag ">";}{ match($0, regex, m); for(i = 1;; i++) { if(!(i in m)) break; printf("%s\n",m[i]);}}' $2; fi}for xml in users/*.xml; do n=$(get_xml alias $xml) name=$(get_xml name user_alias/$n.xml) d=$(get_xml domain $xml) domain=$(get_xml name domains/$d.xml) email=$(get_xml email_cdr $xml) [ -n "$email" ] && echo $name@$domain: $email type=$(get_xml type $xml) if [ $type = extensions ]; then id=$(get_xml id $xml) for t in email_address email_recadr wakeup_fail_email; do email=$(get_xml $t extensions/$id.xml) [ -n "$email" ] && echo $name@$domain: $email done fidonefor xml in domains/*.xml; do domain=$(get_xml name $xml) for t in email_cdr e911_emails billing_email; do email=$(get_xml $t $xml) [ -n "$email" ] && echo $domain: $email donedone