[Plugin] CA User Scripts


Recommended Posts

Recently started using the plug-in and am running into an issue where, if the script is started in the background, aborting the script does not kill the process.

 

It's a simple RAM monitoring script with an if statement if that makes any difference.

Link to comment

Hello Everyone,

 

I know this is probably a repeat post but I need some help getting this script to run.  What I'm trying to do is have my server reboot itself once a week (Wednesday @ 0400).  Something is off e because the script is not running at the scheduled time.  However, if I click "Run Script" the server reboots no problem.  Can someone take a look at this and tell me where I'm going wrong?

 

Any help would be greatly appreciated.

 

 

Script.JPG.680d278d692b55c5e51b27449f0ce98a.JPG

 

2067845190_UserScripts.thumb.JPG.8db414f4ac1afd2581087d9d5a2d3ab3.JPG

 

Rio

Link to comment

 I've been running into problems with my server locking up, every 8-9 days or so. To eliminate that until I can figure out what's wrong I want it to reboot itself in an effort to keep my dockers up and running. 

Link to comment

Hi everybody,

 

I am new to UNRAID but already thrilled :)

 

I have different scripts running with this plugin, so far, so good. But when I click on the "Show Log" button in the GUI I only get a new popup window with the UNRAID dashboard, no logs :(

 

When I clock on "Download logs" the download is working correctly, I only cannot show the logs directly in the GUI. 

 

Any advice? Thanks!

 

EDIT: It works when using Chrome on Mac OS, but I was using Safari. Any hints why it is not working with Safari?

 

EDIT2: With the knowledge that only Safari has this problem I found different topics regarding that issue. Unfortunately with no solution or fix since years :( But anyway I am very glad that it has nothing to to with this great plugin "CA User Scripts" ;) 

 

 

 

Edited by nicx
Link to comment
7 hours ago, superrio said:

 I've been running into problems with my server locking up, every 8-9 days or so. To eliminate that until I can figure out what's wrong I want it to reboot itself in an effort to keep my dockers up and running. 

I'd concentrate on solving the real problem first, but your cron schedule has WED in it.  Use a number to signify the day of the week.

Link to comment
9 hours ago, Cessquill said:

I'd concentrate on solving the real problem first, but your cron schedule has WED in it.  Use a number to signify the day of the week.

Thanks, for the help.  Once I changed 'WED' to a number, the cron works as it should.  As for my problem, I believe the server locking up is caused by bad RAM.  When I check the log of the management port of the server, I noticed that each time it locked up there is a "Correctable Memory ECC" event with one of the sticks of RAM.  I'm ordering more sticks to replace the one that's triggering the log event and to have a few spares on hand.

Link to comment

Today I upgraded to the latest unraid release (6.9.2). I also added a password to the root user account. Now the user script that I have controlling the array fan stopped working. I copied the output from the script below when it runs. Any recommendations on where to start?

Script location: /tmp/user.scripts/tmpScripts/Fan Speed/script
Note that closing this window will abort the execution of this script
Disk /dev/sdc current temp is 0
Disk /dev/sdd current temp is 0
Disk /dev/sde current temp is 0
Disk /dev/sdf current temp is 0
Disk /dev/sdg current temp is 0
Disk /dev/sdh current temp is 27
/tmp/user.scripts/tmpScripts/Fan Speed/script: line 93: /sys/class/hwmon/hwmon1/device/pwm2_enable: Permission denied
cat: /sys/class/hwmon/hwmon1/device/pwm2: No such file or directory
cat: /sys/class/hwmon/hwmon1/device/fan2_input: No such file or directory
/tmp/user.scripts/tmpScripts/Fan Speed/script: line 99: *100: syntax error: operand expected (error token is "*100")
/tmp/user.scripts/tmpScripts/Fan Speed/script: line 104: [: : integer expression expected
/tmp/user.scripts/tmpScripts/Fan Speed/script: line 106: [: : integer expression expected
/tmp/user.scripts/tmpScripts/Fan Speed/script: line 128: [: : integer expression expected

DONE

 

Link to comment
16 hours ago, wsume99 said:

Today I upgraded to the latest unraid release (6.9.2). I also added a password to the root user account. Now the user script that I have controlling the array fan stopped working. I copied the output from the script below when it runs. Any recommendations on where to start?


Script location: /tmp/user.scripts/tmpScripts/Fan Speed/script
Note that closing this window will abort the execution of this script
Disk /dev/sdc current temp is 0
Disk /dev/sdd current temp is 0
Disk /dev/sde current temp is 0
Disk /dev/sdf current temp is 0
Disk /dev/sdg current temp is 0
Disk /dev/sdh current temp is 27
/tmp/user.scripts/tmpScripts/Fan Speed/script: line 93: /sys/class/hwmon/hwmon1/device/pwm2_enable: Permission denied
cat: /sys/class/hwmon/hwmon1/device/pwm2: No such file or directory
cat: /sys/class/hwmon/hwmon1/device/fan2_input: No such file or directory
/tmp/user.scripts/tmpScripts/Fan Speed/script: line 99: *100: syntax error: operand expected (error token is "*100")
/tmp/user.scripts/tmpScripts/Fan Speed/script: line 104: [: : integer expression expected
/tmp/user.scripts/tmpScripts/Fan Speed/script: line 106: [: : integer expression expected
/tmp/user.scripts/tmpScripts/Fan Speed/script: line 128: [: : integer expression expected

DONE

 

I looked around this morning trying to solve the issue. I ran pwmconfig and the array fan can be controlled but there are no devices in sys/class/hwmon/hwmon1/device/. It appears something has changed in the new version and I can't figure it out yet. I reverted back to 6.8.3 and everything works correctly. More research is in my future.

Link to comment
Posted (edited)

I am looking for a script to clone a github repo to a folder in my appdata folder. Can someone help me? 

 

Figured this out, super easy. My example: 

 

git clone <REPO> /mnt/user/data/ETCETC

Edited by kri kri
Link to comment
55 minutes ago, kri kri said:

I am looking for a script to clone a github repo to a folder in my appdata folder. Can someone help me? 

This script was used for a while when Plex encoding needed patching from a github script.  Whilst it's not exactly what you're after it might get you going...

 

#!/bin/bash

############################### DISCLAIMER ################################
# This script now uses someone elses work!                                #
# Please visit https://github.com/revr3nd/plex-nvdec/                     #
# for the author of the new transcode wrapper, and show them your support!#
# Any issues using this script should be reported at:                     #
# https://github.com/Xaero252/unraid-plex-nvdec/issues/                   #
###########################################################################

# This is the download location for the raw script off github. If the location changes, change it here
plex_nvdec_url="https://raw.githubusercontent.com/revr3nd/plex-nvdec/master/plex-nvdec-patch.sh"
patch_container_path="/usr/lib/plexmediaserver/plex-nvdec-patch.sh"

# This should always return the name of the docker container running plex - assuming a single plex docker on the system.
con="$(docker ps --format "{{.Names}}" | grep -i plex)"

# Verify plex container is running
if [ -z $con ]; then
	echo -n "<font color='red'><b>Error: Cannot find Plex container. Make sure it's running and has "plex" in the name.</b></font>"
        exit 1
fi

# Uncomment and change the variable below if you wish to edit which codecs are decoded:
#CODECS=("h264" "hevc" "mpeg2video" "mpeg4" "vc1" "vp8" "vp9")

# Turn the CODECS array into a string of arguments for the wrapper script:
if [ "$CODECS" ]; then
	codec_arguments=""
	for format in "${CODECS[@]}"; do
		codec_arguments+=" -c ${format}"
	done
fi

echo "Applying hardware decode patch..."
	
# Grab the latest version of the plex-nvdec-patch.sh from github:
echo -n 'Downloading patch script...'
wget -qO- --show-progress --progress=bar:force:noscroll "${plex_nvdec_url}" | docker exec -i "$con"  /bin/sh -c "cat > ${patch_container_path}" 

# Verify that wget was successful
if [[ $? -ne 0 ]]; then
    echo -n "<font color='red'><b>Error: wget download failed, non-zero exit code.</b></font>"
    exit 1; 
fi

# Make the patch script executable.
docker exec -i "$con" chmod +x "${patch_container_path}"

# Run the script, with arguments for codecs, if present.

if [ "$codec_arguments" ]; then
	docker exec -i "$con" /bin/sh -c "${patch_container_path}${codec_arguments}"
else
	docker exec -i "$con" /bin/sh -c "${patch_container_path}"
fi

 

Link to comment
Posted (edited)
On 6/17/2021 at 8:20 PM, superrio said:

Hello Everyone,

 

I know this is probably a repeat post but I need some help getting this script to run.  What I'm trying to do is have my server reboot itself once a week (Wednesday @ 0400).  Something is off e because the script is not running at the scheduled time.  However, if I click "Run Script" the server reboots no problem.  Can someone take a look at this and tell me where I'm going wrong?

 

Any help would be greatly appreciated.

 

 

Script.JPG.680d278d692b55c5e51b27449f0ce98a.JPG

 

2067845190_UserScripts.thumb.JPG.8db414f4ac1afd2581087d9d5a2d3ab3.JPG

 

Rio

Wouldn't your cron schedule go like this? :

0 4 * * 3

 

Edited by cybrnook
Link to comment

Still having some issues with this plugin regarding background tasks, however this issue is a bit more important and without a mitigation on my own versus my previous problem:

On 6/14/2021 at 2:54 AM, TheOgre said:

Recently started using the plug-in and am running into an issue where, if the script is started in the background, aborting the script does not kill the process.

 

It's a simple RAM monitoring script with an if statement if that makes any difference.

 

 

The issue I am having now is that a script I am running in the background, that monitors system ram usage and restarts a docker container to prevent the system from completely running out of ram, seems to ONLY work when I log into the webui.

 

Let me preface this by saying, I know restarting a container due to a ram issue is usually not an acceptable fix but in this situation, Zoneminder is having major memory leak issues on versions past 1.34 and even the developer is trying to fix it but has yet to come to a conclusion on how to, thus this is a temporary fix as it only needs restarting once in a while.

 

The script in question:

#!/bin/bash
threshold=250          # Minimum amount of memory left when you should start killing, in MB
browser="firefox-bin"  # Change this to whatever you use, firefox is actually firefox-bin
echo "Monitoring RAM usage and restarting Zoneminder docker when remaining RAM falls below 250mb"
while true; do
    available=$(free -m | head -2 | tail -1 | awk '{print $7}')
    if [ "$threshold" -ge "$available" ]; then
        docker restart Zoneminder
        echo "RAM usage exceeded, restarting Zoneminder docker....one moment"
    fi
    sleep 20
done

 

 

The oddest thing about this, was this exact script was working for a few weeks, and suddenly does not work unless the server has an active GUI connection to it open. For instance, the server will creep up in memory until it reaches the 250mb left mark, then the script restarts the container, but this doesn't happen anymore until after I log into the unraid webui. I try to access any service/docker running on the machine, and it fails due to the server being out of ram, but when I load into the webui, system CPU and RAM usage is pegged at 100% but after a few short moments, the script kicks in and restarts the process.

 

I don't see any reason for this behavior and why it started not working randomly (guess that's most IT problems lol) but I have tried everything from recreating the script, restarting the server, and even increasing the RAM threshold within the script to no avail.

 

Any help would be greatly appreciated!

Link to comment
  • 4 weeks later...

Any scripts that backups selected shares (including for example nextcloud) to an SATA unassigned device with the backup being encrypted?
(want to backup to a drive 2-4 times a year and store it outside my own home)

Link to comment

The unassigned devices plugin has a very nice option to run a script when external drive is plugged in.

Use the default script button to start with a default script and build from there, I have something similar build but not with encryption.

Edited by soana
Link to comment
2 minutes ago, soana said:

The unassigned devices plugin has a very nice option to run a script when external drive is plugged in.

Use the default script button to start with a default script and build from there, I have something similar build but not with encryption.

I have tried multiple times to get the UD scripts to work but could never figure it out, it doesn't make sense. I wish it could be connected to user scripts so I can just select a user script to run.

Link to comment

Here is my script I did not put too much time into it since it did the job from the first time.

Line 4 and 5 define the source and the destination. The backup (rsync) and notification bits are in the ACTION block

 

#!/bin/bash
PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin

source="/mnt/user/Personal/"
destination="/mnt/disks/My_Book_3Tb/"

## Available variables: 
# AVAIL      : available space
# USED       : used space
# SIZE       : partition size
# SERIAL     : disk serial number
# ACTION     : if mounting, ADD; if unmounting, UNMOUNT; if unmounted, REMOVE; if error, ERROR_MOUNT, ERROR_UNMOUNT
# MOUNTPOINT : where the partition is mounted
# FSTYPE     : partition filesystem
# LABEL      : partition label
# DEVICE     : partition device, e.g /dev/sda1
# OWNER      : "udev" if executed by UDEV, otherwise "user"
# PROG_NAME  : program name of this script
# LOGFILE    : log file for this script

case $ACTION in
  'ADD' )
    # do your stuff here
    /usr/local/emhttp/webGui/scripts/notify -e "Unraid Server Notice" -s "Unassigned Devices" -d "Device mounted" -i "normal"
    date >/var/log/My_Book_3Tb_Backup.log
    /usr/bin/rsync -avrtH --delete $source $destination >>/var/log/My_Book_3Tb_Backup.log
    /usr/local/emhttp/webGui/scripts/notify -e "Unraid Server Notice" -s "My_Book_3Tb" -d "Backup to My_Book_3Tb finished see /var/log/My_Book_3Tb_Backup.log for details" -i "normal"

    # This will refresh the UD webpage when the script is finished.
    /usr/local/sbin/rc.unassigned refresh $DEVICE
  ;;

  'UNMOUNT' )
    # do your stuff here
    /usr/local/emhttp/webGui/scripts/notify -e "Unraid Server Notice" -s "Unassigned Devices" -d "Device unmounting" -i "normal"
  ;;

  'REMOVE' )
    # do your stuff here
    /usr/local/emhttp/webGui/scripts/notify -e "Unraid Server Notice" -s "Unassigned Devices" -d "Device unmounted" -i "normal"
  ;;

  'ERROR_MOUNT' )
    # do your stuff here
    /usr/local/emhttp/webGui/scripts/notify -e "Unraid Server Notice" -s "Unassigned Devices" -d "Error mounting device" -i "alert"
  ;;

  'ERROR_UNMOUNT' )
    # do your stuff here
    /usr/local/emhttp/webGui/scripts/notify -e "Unraid Server Notice" -s "Unassigned Devices" -d "Error unmounting device" -i "alert"
  ;;
esac

 

Link to comment
  • 2 weeks later...
On 6/26/2016 at 1:23 AM, Squid said:

#description=this is the description of the script

#foregroundOnly=true

#backgroundOnly=true

#arrayStarted=true

#name=blah blah blah

#clearLog=true

#argumentDescription=This is the description of the argument(s)

#argumentDefault=defaultArg1 defaultArg2 etc

#noParity=true

First of, I love this plugin. Second, would it be possible to allow variables for Node scripts too, i.e. parsing `//` right after the shebang, in addition to `#`? Like:

#!/usr/bin/env node
//name=Script name

I know I can just run the JS file from the shell script but I prefer to have it self-contained.

Link to comment

Does anyone have a script that will check the docker logs for a specific error and restart a container if the error is present?

 

In my case, Plex corrupts EasyMediaEncoder every now and then which will not allow any media to play. The only way I have managed to fix it is to go in and manually delete the folder and restart the container. I did create a script that does this for me but I have to manually fire it. 

 

I am hoping there is a way that I can monitor the logs every 5 minutes or so to search for (or any portion of)

Jobs: Exec of /config/Library/Application Support/Plex Media Server/Codecs/EasyAudioEncoder-1452-linux-x86_64/EasyAudioEncoder/EasyAudioEncoder failed. (13)

and then fire the script to automatically delete the folder and restart Plex.

 

If anyone has a script similar to this or has any info to point me in the right direction, it would be much appreciated.

 

 

--------------------------

EDIT: Got it figured out:

if docker logs --since 1m PlexMediaServer 2>&1 | grep -i "EasyAudioEncoder failed"; then
  echo "EMC Failed"
  echo "Stopping Plex container..."
  docker stop PlexMediaServer

  echo "Deleting Codecs folder..."
  rm -r "mnt/user/docker/Plex-Media-Server/config/Library/Application Support/Plex Media Server/Codecs"

  echo "Starting Plex again..."
  docker start PlexMediaServer

  echo "Sending notification to UNRAID"
  /usr/local/emhttp/webGui/scripts/notify -e "EasyMediaEncoder failed!" -s "Plex Media Server" -d "EasyAudioEncoder failed. Check to see if it has been fixed." -i "alert"

  echo "Fixed!"
fi

It basically checks the last minute in the docker logs for plex and searches "EasyAudioEncoder failed". If it does, it stops Plex, deletes the EMC folder, and then restarts Plex. 

Edited by LTM
Link to comment

A small feature request: whitespace in the output of a script is currently being collapsed, causing this (the columns are supposed to be aligned):

 

screenshot-unraiden.local-2021_08.22-19_14_15.thumb.png.a2021efbe2528c571e2e44202f501166.png

 

If the output were to be wrapped in a <pre> tag, it will preserve the whitespace and show correctly, like this:

screenshot-unraiden.local-2021_08.22-19_16_01.thumb.png.260f8bdddd658bc3901eabcc390d7a92.png

 

It would also have the added benefit of adding some top margin to the output, for better separation :)

 

(the font-family of the <pre> tag might need to be set to 'bitstream' to not get overridden with 'monospace')

Link to comment

Hello everyone,

I have been having an issue for the past months whereby i can't edit save or delete anything, clicking the save button doesn't submit anything and when I refresh the page nothing has changed. How would I reset the app so I can start fresh? I tried uninstalling the app and reinstalling but the settings ect are still there.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.