• Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Search
  • Register
  • Login
Netgate Discussion Forum
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Search
  • Register
  • Login

Issue running python script from Cron

Scheduled Pinned Locked Moved General pfSense Questions
6 Posts 3 Posters 3.4k Views
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M
    moonie
    last edited by Aug 12, 2014, 11:03 AM

    Hi All,

    I've viewed other messages re: issues running scripts with Cron but I'm still unable to resolve my issue.

    I have a python script which I would like to run every few minutes (15 in this example) therefore I have added the following line to crontab using the command```
    crontab -e

    
    

    */15 * * * * python /usr/bin/bwmonitor.py

    
    The script starts:
    
    

    #!/usr/local/bin python
    import subprocess
    import re
    import time

    f = open( '/var/log/bwmon.log','a')
    dt = time.strftime("%d/%m/%Y %H:%M:%S - ")
    cmd = subprocess.Popen('vnstat -i re0_vlan400', shell=True, stdout=subprocess.PIPE)

    
    and this all runs fine from an interactive session. I've noticed I don't have a /var/log/cron file either to check for any errors and have tried appending a '> mylog' to capture output to no avail.
    
    The output of running ENV is:
    
    

    USER=root
    SSH_CLIENT=x.x.x.x 35052 22
    MAIL=/var/mail/root
    HOME=/root
    SSH_TTY=/dev/pts/0
    LOGNAME=root
    TERM=vt100
    BLOCKSIZE=K
    PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin
    SHELL=/bin/sh
    PWD=/var/log
    SSH_CONNECTION=x.x.x.x 35052 x.x.x.x 22
    FTP_PASSIVE_MODE=YES
    HOSTTYPE=FreeBSD
    VENDOR=intel
    OSTYPE=FreeBSD
    MACHTYPE=i386
    SHLVL=1
    GROUP=wheel
    HOST=pfSense
    REMOTEHOST=x.x.x.x
    CLICOLOR=true
    LSCOLORS=exfxcxdxbxegedabagacad

    
    Any suggestions as to what else I could try?
    
    Cheers
    1 Reply Last reply Reply Quote 0
    • B
      BBcan177 Moderator
      last edited by Aug 12, 2014, 12:43 PM

      You can also add the pfSense package "cron" to manage cron jobs easier.

      Also make sure that you code the path of any files. I notice that "vnstat" doesn't have a full path. Cron probably can't locate the file when cron runs.

      "Experience is something you don't get until just after you need it."

      Website: http://pfBlockerNG.com
      Twitter: @BBcan177  #pfBlockerNG
      Reddit: https://www.reddit.com/r/pfBlockerNG/new/

      1 Reply Last reply Reply Quote 0
      • M
        moonie
        last edited by Aug 12, 2014, 1:52 PM

        Thanks BBcan177,

        I have used the GUI package as well as the CLI.

        Didn't think about specifying the full path to vnstat, I have done that now but still getting the same issue.

        Is there anyway to simulate how cron runs a command which might show an error?

        Cheers.

        1 Reply Last reply Reply Quote 0
        • B
          BBcan177 Moderator
          last edited by Aug 12, 2014, 2:06 PM

          Is the shebang correct?

          http://stackoverflow.com/questions/6908143/should-i-put-shebang-in-python-scripts

          I ran "where python" and it comes up with "/usr/local/bin/python" so it seems to be ok?

          Since you have the shebang in the file, maybe run it as :

          */15 * * * * /usr/bin/bwmonitor.py

          or add

          /usr/bin/bwmonitor.py >> /location/of/logfile 2>&1

          "Experience is something you don't get until just after you need it."

          Website: http://pfBlockerNG.com
          Twitter: @BBcan177  #pfBlockerNG
          Reddit: https://www.reddit.com/r/pfBlockerNG/new/

          1 Reply Last reply Reply Quote 0
          • F
            FarmerB3d
            last edited by Aug 12, 2014, 7:22 PM

            might it be that your have the wrong line endings?

            I recently lost a day because my pyton would not run in cron but fine as a script. I had forgotten about the carriage returns.
            dos2unix will fix it for you.

            1 Reply Last reply Reply Quote 0
            • M
              moonie
              last edited by Aug 12, 2014, 7:32 PM

              Hey guys,

              Thanks for your help. I think it's solved! In the shebang I had

              /use/local/bin python

              as opposed to

              /use/local/bin/python

              since then and removing "python" from the crontab entry it seems to be working!

              Thanks again.

              1 Reply Last reply Reply Quote 0
              6 out of 6
              • First post
                6/6
                Last post
              Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.
                This community forum collects and processes your personal information.
                consent.not_received