Quellcode durchsuchen

- Fix für den Fehler "Argument list too long"
- Problem war wohl, dass die Ausgabe vom check_mk_agent zu lang für eine Environment-Variable war, der Fehler hatte nichts mit curl zu tun.
- Der Output wird nun in eine temp-Datei zwischengelagert

erdoking vor 4 Jahren
Ursprung
Commit
4640354834
1 geänderte Dateien mit 12 neuen und 9 gelöschten Zeilen
  1. 12 9
      check_mk_push/cmk_send_agentdata.sh

+ 12 - 9
check_mk_push/cmk_send_agentdata.sh

@@ -6,7 +6,7 @@
 # |           | |___| | | |  __/ (__|   <    | |  | | . \            |
 # |            \____|_| |_|\___|\___|_|\_\___|_|  |_|_|\_\           |
 # |                                                                  |
-# | Copyright Jonas Nickl 2016             development@ichalsroot.de |
+# | Copyright Jonas Nickl 2021             development@ichalsroot.de |
 # +------------------------------------------------------------------+
 #
 # This file is an addon for Check_MK.
@@ -26,16 +26,19 @@
 HOSTNAME=`hostname`
 MK_CONFDIR=/etc/check_mk
 
+temp_file=$(mktemp)
+ 
 ## DEBUG Level (BOOL)
 if [ "$1" == "--debug" ] ; then DEBUG="1"; fi
-
+ 
 be_done()
 {
+    rm ${temp_file}
     echo "RC=$STATUS"
     ## bad returncode if status nok
     if [ "$STATUS" != "OK" ]; then exit 1; fi
 }
-
+ 
 validate()
 ## Verify config dir exists and that the config file exists
 {
@@ -59,19 +62,19 @@ validate()
         echo "curl was not found in path, please install it." 
         exit 1
     fi
-
+ 
 }
-
+ 
 get_result()
 {
    ## decode agent output with base64, remove line breaks and replace plus with html +
-   export DATA=$(check_mk_agent | base64 --wrap=0 | sed 's/+/%2b/g' )
+   export DATA=`check_mk_agent | base64 --wrap=0 | sed 's/+/%2b/g' > ${temp_file}`
 }
-
+ 
 send_result()
 {
-    [ $DEBUG ] && echo "curl -X POST --silent --user $OMDUSER:$OMDPASS --data \"DATA=$DATA&HOSTNAME=$HOSTNAME&DEBUG=$DEBUG\" $OMDURL" 
-    STATUS=$(curl -X POST --silent --user $OMDUSER:$OMDPASS --data "DATA=$DATA&HOSTNAME=$HOSTNAME&DEBUG=$DEBUG" "$OMDURL")
+    [ $DEBUG ] && echo '$(echo "HOSTNAME=$HOSTNAME&DEBUG=$DEBUG&DATA=cat1 ${temp_file}" | curl -X POST --silent --user $OMDUSER:$OMDPASS --data @- $OMDURL'
+    STATUS=$(echo "HOSTNAME=${HOSTNAME}&DEBUG=${DEBUG}&DATA=`cat ${temp_file}`" | curl -X POST --silent --user ${OMDUSER}:${OMDPASS} --data @- ${OMDURL} )
     
     if [ $? != 0 ]; then
         echo "Failed to submit agent output via CURL"