sendip.sh
I've created a simple script which send me an email when the IP changes, or it send me the IP by default at midnight. At first i subscribed to a service called smtp2go, installed ssmtp and configured ssmtp like this:sudo apt-get install ssmtp mailutils sudo nano /etc/ssmtp/ssmtp.conf
rewriteDomain=smtp2go_ChosenDomain AuthUser=smtp2go_AccountUsername AuthPass=smtp2go_AccountPassword mailhub=mail.smtp2go.com:2525 UseSTARTTLS=YES FromLineOverride=YES
After that i wrote down those lines:
#!/bin/bash
# Just a script to send me an email with my IP
# Use "sendip" to execute the command and "sendip force" to force email send
# Const
readonly LAST_IP_FILEPATH="/home/pi/scripts/lastIp"
readonly MAIL_RECIPIENT="myemail@email.com"
# Main
CURRENT_IP=$( curl ipinfo.io/ip )
LAST_IP=""
# If 'force' delete IP file content
if [ "$1" = "force" ] || [ ! -e $LAST_IP_FILEPATH ]
then
echo "[INFO] Creating new file containing IP"
echo "" > $LAST_IP_FILEPATH
echo $CURRENT_IP > $LAST_IP_FILEPATH
echo "[INFO] Sending email containing IP"
echo "$CURRENT_IP" | mail -s "IP" $MAIL_RECIPIENT
else
echo "[INFO] File found, getting last ip from file"
LAST_IP=$( cat $LAST_IP_FILEPATH )
if [ "$LAST_IP" = "$CURRENT_IP" ]
then
echo "[INFO] IP not changed since the last poll, no need to send an email"
else
echo "[INFO] Whoah! ip changed, i need to send you the new one"
echo $CURRENT_IP > $LAST_IP_FILEPATH
echo "$CURRENT_IP" | mail -s "IP Changed" $MAIL_RECIPIENT
fi
fi
After i make the scipt executable as a bash command
path="/home/pi/scripts/sendip.sh" sudo ln -sfT "$path" /usr/local/bin/sendip chmod +x "$path"
Then, finally, i register the command in crontab, paying attention to change the first row like this. The sendip command will try to understand if the IP changed last time, if yes, it will send you an email with the new public IP.
convert.sh
The other script I created helps you converting media files, so if you have something the media player can't play, you can use the script to launch a media conversion#!/bin/bash
# Just a wrapper to avconv with my preferred settings
# Const
readonly INPUT_DEFAULT_DIR="/media/Vault/Download/2Convert/"
readonly OUTPUT_DEFAULT_DIR="/media/Vault/Download/"
readonly MAIL_RECIPIENT="youremailaddress@email.com"
readonly MAIL_SUBJECT="LittleBox: File converted"
# Function
sendMail(){
endEpoch="$(date +%s)"
# Compute the difference in dates in seconds
tDiff="$(($endEpoch-$startEpoch))"
# Compute the approximate minute difference
mDiff="$(($tDiff/60))"
# Compute the approximate hour difference
hDiff="$(($tDiff/3600))"
message=""
if [ $mDiff -gt 59 ]
then
message="File $inputFile processed in approx $hDiff hours"
else
message="File $inputFile processed in approx $mDiff minutes"
fi
echo $message | mail -s "$MAIL_SUBJECT" $MAIL_RECIPIENT
}
executeFileConversion() {
inputFile=$1
outputDirectory=$2
startEpoch="$(date +%s)"
# Get filename and create output file
filename=$(basename "$inputFile")
extension="${filename##*.}"
filename="${filename%.*}"
outputFile="$outputDirectory$filename.mkv"
echo "[INFO] Output file will be: $outputFile"
cmd="avconv -i '$1' -c:v libx264 -preset medium -tune film -c:a copy '$outputFile' -y"
echo "[INFO] Conversion command will be: $cmd"
eval $cmd
sendMail $inputFile $startEpoch
}
executeFileConversionDefault() {
IFS=$'\n'
files=( $(find $INPUT_DEFAULT_DIR -type f) )
for i in "${!files[@]}"; do
echo "[INFO] Executing conversion of '${files[$i]}'"
executeFileConversion "${files[$i]}" "$OUTPUT_DEFAULT_DIR"
done
}
# Main
if [[ $# -eq 0 ]] ; then
echo "[INFO] No parameter specified, all file in default dir will be processed"
executeFileConversionDefault
elif [[ $# -eq 2 ]] ; then
executeFileConversion "$1" "$2"
fi
p2p.sh
I used the last script to shutdown the p2p application when i saw the were decreasing the pi2 performances. The pi3 does not suffer anymore multithreading because it has more firepower, but maybe it could be useful to some of you#!/bin/bash
# Just a script to start/stop p2p services
# Use "p2p start" to start all registered services and "p2p" stop to shutdown
# Const
startCmd=( )
# Amule
startCmd[0]="sudo /etc/init.d/amule-daemon start"
# Transmission
startCmd[1]="sudo service transmission-daemon start"
stopCmd=( )
# Amule
stopCmd[0]="sudo /etc/init.d/amule-daemon stop"
# Transmission
stopCmd[1]="sudo service transmission-daemon stop"
# Functions
execCmd(){
declare -a argArray=("${!1}")
for i in "${!argArray[@]}"; do
echo "[INFO] Executing command ${argArray[$i]}"
eval ${argArray[$i]}
done
}
# Main
case $1 in
"start" )
echo "[INFO] Starting all registered services"
execCmd startCmd[@]
;;
"stop" )
echo "[INFO] Stopping all registered services"
execCmd stopCmd[@]
;;
esac
I think all the script are quite self-explanating and i hope you find it useful. That's all
0 commenti:
Post a Comment
Because of a lot of SPAM about courses, I need to moderate all comments here.
I ensure you that I will answer whenever possible (if you are not a spammer).