Mike Reilly
Mike Reilly

Reputation: 21

Shell Script runs when manually triggered but does nto exicute when Cron runs it

UPDATE After writing out the cron process per Gordon's comment on this post, it seems that Cron cannot find the script. Any guidance on this would be appreciated.

>>/tmp/HRsnapshot.log 2>&1 
/bin/sh: 1: /home/user/Scripts/HRsnapshot.sh: not found
/bin/sh: 1: /home/user/Scripts/HRsnapshot.sh: not found
/bin/sh: 1: /home/user/Scripts/HRsnapshot.sh: not found

I need some assistance in understanding why a cronjob is not executing a script that runs as designed when executed manually from the user account.

Currently, the configuration is as such.

Crontab

#Download HR File from Google and push it to HR Server via SFTP
38 11 * * * BASH_ENV=/home/user/Scripts/preload.sh /home/user/Scripts/HRsnapshot.sh

We are loading user env variables in the preload.sh script

#!/bin/bash


    export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
    . /etc/profile
    . ~/.bashrc
    
    export GAMCFGDIR="/home/user2/GAMConfig"

The Bash profile has some callouts in it to an application named GAM

#Setting for Gam Config
export GAMCFGDIR="/home/user2/GAMConfig"

export PATH

alias gam="/home/user2/bin/gamadv-xtd3/gam"

The primary script is designed to download a file using GAM (Python app that simplifies API calls to Google Cloud for a Google Workspace env)

#!/bin/bash

cd /home/user/Scripts

/home/user2/bin/gamadv-xtd3/gam user '[email protected]' get drivefile id '1S4tkzS2lIj360-WFhTy3FBm6kZ7hsL4PvO7PdikffiidI' format 'csv'  targetfolder /home/user/SFTP/daily_export/ targetname 'FY2022_HR_Form.csv' overwrite

sshpass -p '*jndn4Kz#8Rwrj' sftp [email protected]<<EOF
cd /D:/SFTPRoot/Google_Workflows
put  /home/user/SFTP/daily_export/FY2022_HR_Form.csv
exit
EOF

Cronlog

Oct 15 13:07:01 JUMPBOX CRON[5431]: (user) CMD (BASH_ENV=/home/user/Scripts/preload.sh /home/user/Scripts/HRsnapshot.sh)

Here is what the user's env looks like

SHELL=/bin/bash
SUDO_GID=1000
SUDO_COMMAND=/usr/bin/su user
SUDO_USER=user2
PWD=/home/user/Scripts
LOGNAME=user
HOME=/home/user
LANG=en_US.UTF-8
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
LC_TERMINAL=iTerm2
GAMCFGDIR=/home/user2/GAMConfig
LESSCLOSE=/usr/bin/lesspipe %s %s
TERM=xterm-256color
LESSOPEN=| /usr/bin/lesspipe %s
USER=user
LC_TERMINAL_VERSION=3.4.16
SHLVL=1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
SUDO_UID=1000
MAIL=/var/mail/user
OLDPWD=/home/user2

All user names, IP addresses, Emails Addresses, and Passwords have been obfuscated

Upvotes: 0

Views: 56

Answers (2)

Mike Reilly
Mike Reilly

Reputation: 21

Thanks, everyone for your help.

Strangest thing. There is something invisible in the copied text for the cronjob that is causing the error.

38 11 * * * BASH_ENV=/home/dpmacrina/Scripts/preload.sh /home/dpmacrina/Scripts/HRsnapshot.sh
03 06 * * * BASH_ENV=/home/dpmacrina/Scripts/preload.sh /home/dpmacrina/Scripts/HRSnapshot.sh

These are the two lines that are in the crontab. The top is what was failing, the bottom is what I typed in new. The bottom works.

Upvotes: 0

Walter A
Walter A

Reputation: 20032

Try changing your preload script, export your PATH after sourcing the files.

#!/bin/bash
. /etc/profile
. ~/.bashrc
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
    
export GAMCFGDIR="/home/user2/GAMConfig"

When sshpass is in /usr/local/bin you don't want the path changed by /etc/profile or .bashrc.

Upvotes: 1

Related Questions