• Reset your password

User account menu

  • Artikler
  • Forside
  • Forum
  • Nyheder
  • Log in
Hjem
Linuxin 2025

Breadcrumb

  • Hjem
  • forums
  • [LØST] Kørsel af script via Crontab - Forskelle fra normal kørsel

Hvad kan du med 100% sikkerhed sige, at du har stemt?

Resultater

1
0% (0 stemmer)
2
0% (0 stemmer)
Schrödinger
100% (1 stemme)
Antal stemmer: 1
Af peque | 13.04.2021 07:21

[LØST] Kørsel af script via Crontab - Forskelle fra normal kørsel

Hjælp generelt

Hej Forum



Jeg har på mit arbejde lavet et lille script der gerne skulle importere noget data fra Excel til MySQL således det kan visualiseres for brugerne!

Fra vores ERP system exporteres 3 XLSX filer - som jeg via et script - gerne vil indsætte i databasen på en host.

Mit script virker upåklageligt så længe jeg kører det manuelt - Men når jeg kører det via Cronjob - ser alt OK - melder ingen fejl - Men indsætter ikke data til data basen - Så kan jeg manuelt efterfølgende køre jobbet og alt data kommer ind som forventet



Er der nogen der kan forklare dette - eller se hvad der mangler siden dette ikke vil køre automatisk

Jeg har lavet en config fil som indeholder password etc mm:



#!/bin/bash

#########################################################

# This script checks for .xlsx files and converts #

# these to .csv and inserts content into MySQL DB #

#########################################################

# External config/variables can be found in /.config.sh.



#Adding information from static config file

[ -r /scripts/meraimport/config.sh ] && . /scripts/meraimport/config.sh



#Splash Intro

echo "################################################" >> $LOG

echo "#Script indsætter data fra MERA. Build: rc-1.0c#" >> $LOG

echo "################################################" >> $LOG

echo " " >> $LOG

echo "Today is $FDATE and starting Mera Data Import." >> $LOG

echo " " >> $LOG

echo "Changing to import dir: $SYSTEMDIR" >> $LOG

cd $SYSTEMDIR



echo " " >> $LOG

echo "Looking for new Mera Exports..." >> $LOG

LIST=(`find ./ -maxdepth 1 -name "*.xlsx"`)

if [ ${#LIST[@]} -gt 0 ];

then

for f in *.xlsx

do

echo " $f - Found!" >> $LOG

done

echo " " >> $LOG

echo "Converting to .csv" >> $LOG

echo "This might take a while..." >> $LOG

for f in *.xlsx

do

/usr/local/bin/in2csv --no-inference $f > ./output/${f%.*}.csv 2> /dev/null

echo " $f - Done!" >> $LOG

done



echo " " >> $LOG

echo "Inserting Rows from generated .csv" >> $LOG

CSVLIST=(`find $SYSTEMDIR/output/ -maxdepth 1 -name "*.csv"`)

if [ ${#CSVLIST[@]} -gt 0 ];

then

for f in $SYSTEMDIR/output/*.csv

do

noPath=${f##*/}

noExt=${noPath%.*}

/usr/local/bin/csvsql --db mysql+mysqlconnector://$dbUser:$dbPass@$dbString:$dbPort/$dbSchema --tables $noExt --no-create --insert < $f >> $DLOG

echo " Success - inserting $noPath into Table: $noExt - Done!" >> $LOG

STATUS='0'

done



echo " " >> $LOG

echo "Cleaning up temporary files.." >> $LOG

rm ./output/*



echo " " >> $LOG

echo "Create save folder if not exist.." >> $LOG

if [[ ! -e $SAVEDIR ]];

then

mkdir $SAVEDIR

echo "Folder created" >> $LOG

elif [[ ! -d $SAVEDIR ]];

then

echo "$SAVEDIR already exists but is not a directory" >> $LOG

fi



echo " " >> $LOG

echo "Moving imported xlsx files to save directory" >> $LOG

mv merae744.xlsx $SAVEDIR/merae744_$DATE.xlsx

mv merae745.xlsx $SAVEDIR/merae745_$DATE.xlsx

mv merae746.xlsx $SAVEDIR/merae746_$DATE.xlsx



echo " " >> $LOG

echo "Done moving files - Deleting files above 7days" >> $LOG

# find $SYSTEMDIR/save/* -mtime +7 -exec rm {} \;



echo " " >> $LOG

echo "Changing permission on save folder" >> $LOG

chown -R mera:mera $SYSTEMDIR/save



echo " " >> $LOG

echo " - Done!" >> $LOG



echo " " >> $LOG

echo "Zipping the logfiles and prepare for mail." >> $LOG

cd /tmp

bzip2 -k -z --best dbinsert.log



echo " " >> $LOG

echo "Sending email to $ADMIN and closes the script." >> $LOG



STATUS='0'

else

echo "$FDATE - NO CONVERTED FILES FOUND..." >> $LOG

echo "Exiting Script - NO IMPORTED DATA.." >> $LOG

STATUS='1'

break

fi



else

echo "$FDATE: - No Files found!!!!" >> $LOG

echo "Verify that MERA has exported files" >> $LOG

echo "Exiting Script - NO IMPORTED DATA.." >> $LOG

STATUS='1'

fi



if [ $STATUS -gt 0 ];

then

mail -s "FAILURE IN MERA DATA IMPORT - $DATE" $IT < $LOG

echo "$FDATE: FAILUIRE importing mera Data - Investigate ASAP" >> $INSALOG

else

echo "$FDATE: SUCCESSFULL import of mera data" >> $INSALOG

cat $LOG |mutt -a $DLOG.bz2 -s "Success Mera Import Script: $DATE" -b $ANMO -b $KN -b$IT

rm -rf $DLOG.bz2

fi



#EOF







Meningen er dette script skal køre auto hver morgen og opdatere de seneste ordre indgang mm

Men jeg kan simpelthen ikke se hvor dette går galt - hvordet virker ved manuel kørsekl og ikke via crontab



PFT

P


  • Log in to post comments

Kommentarer6

4 år 1 måned siden

Permalink

Indsendt af mich den 13. april 2021 kl. 13:51

Permalink

Noget med rettigheder?

Hvilken bruger kører du som manuelt?

Hvilken bruger kører cron som?

  • Log in to post comments

4 år 1 måned siden

Permalink

Indsendt af peque den 13. april 2021 kl. 14:23

Permalink

Begge som root
Både manuelt

Begge som root



Både manuelt og via crontab

  • Log in to post comments

4 år 1 måned siden

Permalink

Indsendt af ejvindh den 13. april 2021 kl. 15:51

Permalink

Hvis det var mig, der havde

Hvis det var mig, der havde sådan et problem, ville jeg nok indsætte nogle flere informerende echo-kommandoer undervejs, som kunne afdække forskellene. F.eks. i dine for-løkker, indsætte et echo for hver, så man kunne tælle, hvor mange instanser, der findes. Så logfilen giver nogle indikationer af forskellene.



Tænker på, om der kan være et problem omkring nogle af de angivne fil-stier? At det ser forskelligt ud på de forskellige miljøer?

  • Log in to post comments

4 år 1 måned siden

Permalink

Indsendt af ejvindh den 13. april 2021 kl. 16:32

Permalink

En ekstra ide: Tænker på

En ekstra ide: Tænker på (men ved det ikke) om cronjobbet sættes i gang fra en genvej. Så når scriptet kører:



LIST=(`find ./ -maxdepth 1 -name "*.xlsx"`)



så opfattes "./" som den mappe, hvorfra genvejen opererer, og så finder den ingen filer, da disse ligger andetsteds...



Ved i hvert fald at dette kan være et problem, når jeg kører scripts i en desktop-linux. At man skal lige huske med at CD'e sig ind i den rigtige mappe.

  • Log in to post comments

4 år 1 måned siden

Permalink

Indsendt af mich den 13. april 2021 kl. 22:20

Permalink

Gode kommentarer fra

Gode kommentarer fra ejvindh.



Kan du se, om scriptet konverterer xlxs-filerne til csv, når det kører som cron-job, eller om det fejler før konverteringen?

Det vil give nogle pejlemærker.

  • Log in to post comments

4 år siden

Permalink

Indsendt af peque den 29. april 2021 kl. 10:02

Permalink

Fik løst det
Hovedsageligt

Fik løst det



Hovedsageligt er de fleste ting om fuld path - Men fik løst det ved at lave min $SYSTEMDIR således det kører den fulde sti



csvkit drillede en smule efterfølgende grundet unique kolloner og duplicates - Men fandt et prefix til csvsql som ignore



Så alle ting er løst nu!



P

  • Log in to post comments

Svar søges

2 stk Jolla C2 sælges 0
Den er go 0
Vil du have et sikrere og mere privat internet? Du skal blot installere Vivaldi-browseren med Proton VPN understøttelse! 0
14. februar = I Love Free Software Day 0
Lokal fil-deling - for de dovne. 0

Seneste aktivitet

Det første forumindlæg efter installation af Forum-modulet 8
Test 1
Vanilla OS 12
Nye forum-indlæg viser sig kun 1 gang 1
Vil alle forumindlæg vise sig to gange 1
Hjælp til remote terminal vindue? 3
PCLinuxOS 19
Kan ikke boote på installation 24
80-20 reglen 1
Skærmlys fader ud på min bærbare 8
32 bit distro på max 700mb der stadig understøttes 26
Har vi nogen Linux konsulenter i Slagelse området? 3
Virkelig 7
gnome-software? 3
Archer T2U AC600 Wireless Dual Band USB Adapter 26
En farverig APT 3.0 udgivelse imponerer med sine nye funktioner 2
Unix's fødsel 2
Linux Mint 13
"Intet realistisk alternativ" - mig i r*ven 1
German state moving 30,000 PCs to LibreOffice 6

Copyright © 2025 Company Name - All rights reserved

Developed & Designed by Alaa Haddad