Dateien nach "/" hochladen
DE: Ein automatisiertes Skript, das mittels eines Linux-Cronjobs zyklisch ausgeführt wird, um Dateiinhalte zu lesen und diese an eine Custom Function zur weiteren Verarbeitung zu übermitteln. EN: An automated script triggered by a Linux cron job that periodically reads file contents and forwards them to a custom function for further processing.
This commit is contained in:
commit
3ab34e4dd0
98
fileInterface.sh
Normal file
98
fileInterface.sh
Normal file
@ -0,0 +1,98 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Variablen
|
||||
stationNumber="101010010"
|
||||
url="http://localhost:8080"
|
||||
|
||||
# Funktion, um den regLogin durchzuführen
|
||||
performRegLogin() {
|
||||
loginResponse=$(curl -v -X POST "$url/mes/imsapi/rest/actions/regLogin" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"sessionValidationStruct": {
|
||||
"stationNumber": "'"$stationNumber"'",
|
||||
"stationPassword": "",
|
||||
"user": "",
|
||||
"password": "",
|
||||
"client": "01",
|
||||
"registrationType": "S",
|
||||
"systemIdentifier": "Shellscript"
|
||||
}
|
||||
}')
|
||||
|
||||
echo "Login response: $loginResponse" # Zum Debuggen
|
||||
|
||||
# Extrahieren der Session-Informationen
|
||||
sessionId=$(echo "$loginResponse" | jq -r '.result.sessionContext.sessionId')
|
||||
persId=$(echo "$loginResponse" | jq -r '.result.sessionContext.persId')
|
||||
|
||||
echo "Session ID: $sessionId, Pers ID: $persId" # Zum Debuggen
|
||||
}
|
||||
|
||||
|
||||
# Funktion, um den Custom-Function-Aufruf durchzuführen
|
||||
performCustomFunction() {
|
||||
local file=$1
|
||||
# fileContent=$(sed 's/$/|/' "$file" | jq -Rs .)
|
||||
fileContent=$(sed ':a;N;$!ba;s/\n/|/g' "$file" | jq -Rs .)
|
||||
fileContent="${fileContent:1:-1}" # Entfernt das erste und letzte Zeichen
|
||||
|
||||
echo "Session ID2: $sessionId, Pers ID: $persId"
|
||||
echo "Filecontent: $fileContent"
|
||||
|
||||
customFunctionResponse=$(curl -v --location "$url/mes/imsapi/rest/actions/customFunction" --header 'Accept: application/json' --header 'Content-Type: application/json' --data ' {
|
||||
"sessionContext": {
|
||||
"sessionId": "'$sessionId'",
|
||||
"persId": "'$persId'",
|
||||
"locale": "de"
|
||||
},
|
||||
"methodName": "Fazit.EcuStringAudi",
|
||||
"inArgs": [ "File_Response", "'"$fileContent"'", "ResponseLog", "receive", "Number", "NA", "0", "0" ] } '
|
||||
)
|
||||
|
||||
echo "CustomFunction Response: $customFunctionResponse"
|
||||
returnValue=$(echo $customFunctionResponse | jq -r '.result.return_value')
|
||||
mkdir -p ./error
|
||||
mkdir -p ./done
|
||||
if [[ "$returnValue" != "0" && "$returnValue" != "3" ]]; then
|
||||
mv "$file" ./error/
|
||||
else
|
||||
mv "$file" ./done/
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
regLogout() {
|
||||
|
||||
|
||||
echo "Session ID2: $sessionId, Pers ID: $persId"
|
||||
|
||||
|
||||
regLogout=$(curl -v --location "$url/mes/imsapi/rest/actions/regLogout" --header 'Accept: application/json' --header 'Content-Type: application/json' --data ' {
|
||||
"sessionContext": {
|
||||
"sessionId": "'$sessionId'",
|
||||
"persId": "'$persId'",
|
||||
"locale": "de"}}')
|
||||
|
||||
echo "Reglogout Response: $regLogout"
|
||||
|
||||
}
|
||||
|
||||
|
||||
# Hauptlogik
|
||||
# Verwenden von find anstelle von ls, um Dateien zu finden, die mindestens 5 Sekunden alt sind
|
||||
# -mmin +0.083 entspricht ungefähr 5 Sekunden (5/60 Minuten)
|
||||
xmlFiles=$(find . -maxdepth 1 -name "*.xml" -mmin +0.083 -type f 2>/dev/null)
|
||||
|
||||
if [[ -n "$xmlFiles" ]]; then
|
||||
performRegLogin
|
||||
for file in $xmlFiles; do
|
||||
# Entfernen des führenden './' aus dem Dateinamen
|
||||
performCustomFunction "${file:2}"
|
||||
done
|
||||
regLogout
|
||||
else
|
||||
echo "Keine geeigneten XML-Dateien gefunden."
|
||||
fi
|
||||
Loading…
x
Reference in New Issue
Block a user