From 95f6009d39f39105b360f9c62b347a13e051fcbb Mon Sep 17 00:00:00 2001 From: Naategh Date: Sat, 31 Aug 2019 00:06:01 +0430 Subject: [PATCH] Add files via upload --- colorful-date.sh | 8 ++ extractor.sh | 21 ++++ get-info.sh | 18 ++++ ip-tor.sh | 69 +++++++++++++ length-finder.sh | 3 + mailer.sh | 9 ++ movies.sh | 229 +++++++++++++++++++++++++++++++++++++++++ top-ips.sh | 14 +++ turn-server-uploads.sh | 52 ++++++++++ web-server.sh | 24 +++++ 10 files changed, 447 insertions(+) create mode 100644 colorful-date.sh create mode 100644 extractor.sh create mode 100644 get-info.sh create mode 100644 ip-tor.sh create mode 100644 length-finder.sh create mode 100644 mailer.sh create mode 100644 movies.sh create mode 100644 top-ips.sh create mode 100644 turn-server-uploads.sh create mode 100644 web-server.sh diff --git a/colorful-date.sh b/colorful-date.sh new file mode 100644 index 0000000..daa1a24 --- /dev/null +++ b/colorful-date.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +echo "Colorful Date :)" | toilet -f mini --gay +sleep 0.9 +while true; do + echo "$(date '+%D %T' | toilet -f term -F border --gay)" + sleep 1 +done diff --git a/extractor.sh b/extractor.sh new file mode 100644 index 0000000..f8517a1 --- /dev/null +++ b/extractor.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +if [ $# -ne 1 ]; then + echo "Usage: bash $0 /path/to/file" + exit 0 +fi + +FILE=$1 + +extract () { + # We can simply use from dtrx tool to extract any archived file with any extension :) + # Check dtrx installed or not + if hash dtrx 2> /dev/null; then + dtrx $1 + else + echo "Please install dtrx: sudo apt-get install dtrx" + #exit 0 + fi +} + +extract $FILE diff --git a/get-info.sh b/get-info.sh new file mode 100644 index 0000000..9943862 --- /dev/null +++ b/get-info.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# Get all domains +domains=$@ + +if [[ $# -eq 0 ]]; then + echo "Usage: $0 test.com example.com ..." + exit 1 +fi + +for d in $domains +do + ip=$(host $d | grep 'has add' | head -1 | awk '{ print $4}') + [ "$ip" == "" ] && { echo "Error: An error occurred!"; continue; } + echo -e "\033[93mGetting information about domain: $d [ $ip ] \033[0m" + whois "$ip" | egrep -w 'OrgName:|City:|Country:|OriginAS:|NetRange:' + echo "" +done diff --git a/ip-tor.sh b/ip-tor.sh new file mode 100644 index 0000000..f39c348 --- /dev/null +++ b/ip-tor.sh @@ -0,0 +1,69 @@ +#!/bin/bash +clear + +echo -e """ +_________ _______ _________ _______ _______ +\__ __/( ____ ) \__ __/( ___ )( ____ ) + ) ( | ( )| ) ( | ( ) || ( )| + | | | (____)| _____ | | | | | || (____)| + | | | _____)(_____)| | | | | || __) + | | | ( | | | | | || (\ ( +___) (___| ) | | | (___) || ) \ \__ +\_______/|/ )_( (_______)|/ \__/ + +""" + +echo -e "\tip-tor\033[91m :: \033[0mInstall tor and show your ip" +echo -e "\tCode\033[91m :: \033[0mNaategh" +echo -e "\tEmail\033[91m :: \033[0mmanamtabeshekan@gmail.com" +echo "" + +echo -e """ +\033[91m1) \033[0mOnly install tor service +\033[91m2) \033[0mInstall tor browser +\033[91m3) \033[0mShow my ip +\033[91m4) \033[0mExit +""" + +function main() { + read -p $'\033[36m > \033[0m' choise + +case $choise in + 1 ) + apt update && apt install tor + echo -e "\n\033[93mTor service installed successfully...\033[0m" + echo "" + read -p $'\033[93mDo you want start tor now?[y/N]' answer + case ${answer:0:1} in + y|Y ) + service tor start;; + n|N ) + ;; + esac + main;; + + 2 ) + sudo add-apt-repository ppa:webupd8team/tor-browser + apt update && apt install tor && apt install tor-browser + echo "\n\033[93mTor browser installed successfully...\033[0m" + echo "" + main;; + + 3 ) + echo -e "Your ip is:\033[91m" + ip= curl http://icanhazip.com + echo -e "\033[0m" + main;; + + + 4 ) + echo -e "\t \033[91m-----------bye!-----------\033[0m" + exit 0;; + + * ) + echo -e "\033[91mWrong command!!! \033[0m" + main;; +esac +} + +main diff --git a/length-finder.sh b/length-finder.sh new file mode 100644 index 0000000..1e7c379 --- /dev/null +++ b/length-finder.sh @@ -0,0 +1,3 @@ +#!/bin/bash +read -p "Text: " text +echo -e "Length of $text is\033[91m ${#text} \033[0m" diff --git a/mailer.sh b/mailer.sh new file mode 100644 index 0000000..ad541af --- /dev/null +++ b/mailer.sh @@ -0,0 +1,9 @@ +#!/bin/bash +echo -e "\033[91mNote:\033[0m You should first configure your mail server to use this script, \nSo if you didn't that the script will not work!\n" +sleep 1 + +read -p "Recipient: " Recipient +read -p "Subject: " Subject +read -p "Message: " Message +mail -s $Subject $Recipient <<< $Message + diff --git a/movies.sh b/movies.sh new file mode 100644 index 0000000..f5bf807 --- /dev/null +++ b/movies.sh @@ -0,0 +1,229 @@ +#!/usr/bin/env bash +# Author: Alexander Epstein https://github.com/alexanderepstein + +currentVersion="1.23.0" +configuredClient="" +configuredPython="" +detail=false + +## This function determines which http get tool the system has installed and returns an error if there isnt one +getConfiguredClient() +{ + if command -v curl &>/dev/null; then + configuredClient="curl" + elif command -v wget &>/dev/null; then + configuredClient="wget" + elif command -v http &>/dev/null; then + configuredClient="httpie" + elif command -v fetch &>/dev/null; then + configuredClient="fetch" + else + echo "Error: This tool requires either curl, wget, httpie or fetch to be installed." >&2 + return 1 + fi +} + +## Allows to call the users configured client without if statements everywhere +httpGet() +{ + case "$configuredClient" in + curl) curl -A curl -s "$@" ;; + wget) wget -qO- "$@" ;; + httpie) http -b GET "$@" ;; + fetch) fetch -q "$@" ;; + esac +} + +getConfiguredPython() +{ + if command -v python3 &>/dev/null; then + configuredPython="python3" + elif command -v python2 &>/dev/null; then + configuredPython="python2" + elif command -v python &>/dev/null; then + configuredPython="python" + else + echo "Error: This tool requires python to be installed." + return 1 + fi +} + +if [[ $(uname) != "Darwin" ]]; then + python() + { + case "$configuredPython" in + python3) python3 "$@" ;; + python2) python2 "$@" ;; + python) python "$@" ;; + esac + } +fi + +## Grabs an element from a a json string and then echoes it to stdout +## $1 = the JSON string +## $n+1 = the elements to be indexed +AccessJsonElement() { + json="$1" + shift + accessor="" + for element in "$@"; do + accessor="${accessor}['$element']" + done + echo "$json" | python -c "from __future__ import print_function; import sys, json; print(json.load(sys.stdin)${accessor})" 2> /dev/null + return "$?" +} + +checkInternet() +{ + httpGet github.com > /dev/null 2>&1 || { echo "Error: no active internet connection" >&2; return 1; } # query github with a get request +} + +## This function grabs information about a movie and using python parses the +## JSON response to extrapolate the information for storage +getMovieInfo() +{ + apiKey=946f500a # try not to abuse this it is a key that came from the ruby-scripts repo I link to. + movie=$( (echo "$@" | tr " " + ) | sed 's/-d+//g' ) ## format the inputs to use for the api. Added sed command to filter -d flag. + export PYTHONIOENCODING=utf8 #necessary for python in some cases + movieInfo=$(httpGet "http://www.omdbapi.com/?t=$movie&apikey=$apiKey") > /dev/null # query the server and get the JSON response + checkResponse=$(echo $movieInfo | python -c "import sys, json; print json.load(sys.stdin)['Response']" 2> /dev/null) + if [[ $checkResponse == "False" ]]; then { echo "No movie found" ; return 1 ;} fi ## check to see if the movie was found + # The rest of the code is just extrapolating the data with python from the JSON response + title="$(AccessJsonElement "$movieInfo" "Title")" + year="$(AccessJsonElement "$movieInfo" "Year")" + runtime="$(AccessJsonElement "$movieInfo" "Runtime")" + imdbScore=$(echo $movieInfo | python -c "from __future__ import print_function; import sys, json; print(json.load(sys.stdin)['Ratings'][0]['Value'])" 2> /dev/null) + tomatoScore=$(echo $movieInfo | python -c "from __future__ import print_function; import sys, json; print(json.load(sys.stdin)['Ratings'][1]['Value'])" 2> /dev/null) + rated="$(AccessJsonElement "$movieInfo" "Rated")" + genre="$(AccessJsonElement "$movieInfo" "Genre")" + director="$(AccessJsonElement "$movieInfo" "Director")" + actors="$(AccessJsonElement "$movieInfo" "Actors")" + plot="$(AccessJsonElement "$movieInfo" "Plot")" + + if $detail; then + awards="$(AccessJsonElement "$movieInfo" "Awards")" + boxOffice="$(AccessJsonElement "$movieInfo" "BoxOffice")" + metacriticScore=$(echo $movieInfo | python -c "from __future__ import print_function; import sys, json; print(json.load(sys.stdin)['Ratings'][2]['Value'])" 2> /dev/null) + production="$(AccessJsonElement "$movieInfo" "Production")" + fi +} + +# Prints the movie information out in a human readable format +printMovieInfo() +{ + echo + echo '==================================================' + echo "| Title: $title" + echo "| Year: $year" + echo "| Runtime: $runtime" + if [[ $imdbScore != "" ]]; then echo "| IMDB: $imdbScore"; fi + if [[ $tomatoScore != "" ]]; then echo "| Tomato: $tomatoScore"; fi + if $detail; then + if [[ $metacriticScore != "" ]]; then echo "| Metascore: $metacriticScore"; fi + fi + if [[ $rated != "N/A" && $rated != "" ]]; then echo "| Rated: $rated"; fi + echo "| Genre: $genre" + echo "| Director: $director" + echo "| Actors: $actors" + if [[ $plot != "N/A" && $plot != "" ]]; then echo "| Plot: $plot"; fi + if $detail; then + if [[ $boxOffice != "" ]]; then echo "| Box Office: $boxOffice"; fi + if [[ $production != "" ]]; then echo "| Production: $production"; fi + if [[ $awards != "" ]]; then echo "| Awards: $awards"; fi + fi + echo '==================================================' + echo +} + +update() +{ + # Author: Alexander Epstein https://github.com/alexanderepstein + # Update utility version 2.2.0 + # To test the tool enter in the defualt values that are in the examples for each variable + repositoryName="Bash-Snippets" #Name of repostiory to be updated ex. Sandman-Lite + githubUserName="alexanderepstein" #username that hosts the repostiory ex. alexanderepstein + nameOfInstallFile="install.sh" # change this if the installer file has a different name be sure to include file extension if there is one + latestVersion=$(httpGet https://api.github.com/repos/$githubUserName/$repositoryName/tags | grep -Eo '"name":.*?[^\\]",'| head -1 | grep -Eo "[0-9.]+" ) #always grabs the tag without the v option + + if [[ $currentVersion == "" || $repositoryName == "" || $githubUserName == "" || $nameOfInstallFile == "" ]]; then + echo "Error: update utility has not been configured correctly." >&2 + exit 1 + elif [[ $latestVersion == "" ]]; then + echo "Error: no active internet connection" >&2 + exit 1 + else + if [[ "$latestVersion" != "$currentVersion" ]]; then + echo "Version $latestVersion available" + echo -n "Do you wish to update $repositoryName [Y/n]: " + read -r answer + if [[ "$answer" == [Yy] ]]; then + cd ~ || { echo 'Update Failed'; exit 1; } + if [[ -d ~/$repositoryName ]]; then rm -r -f $repositoryName || { echo "Permissions Error: try running the update as sudo"; exit 1; } ; fi + echo -n "Downloading latest version of: $repositoryName." + git clone -q "https://github.com/$githubUserName/$repositoryName" && touch .BSnippetsHiddenFile || { echo "Failure!"; exit 1; } & + while [ ! -f .BSnippetsHiddenFile ]; do { echo -n "."; sleep 2; };done + rm -f .BSnippetsHiddenFile + echo "Success!" + cd $repositoryName || { echo 'Update Failed'; exit 1; } + git checkout "v$latestVersion" 2> /dev/null || git checkout "$latestVersion" 2> /dev/null || echo "Couldn't git checkout to stable release, updating to latest commit." + chmod a+x install.sh #this might be necessary in your case but wasnt in mine. + ./$nameOfInstallFile "update" || exit 1 + cd .. + rm -r -f $repositoryName || { echo "Permissions Error: update succesfull but cannot delete temp files located at ~/$repositoryName delete this directory with sudo"; exit 1; } + else + exit 1 + fi + else + echo "$repositoryName is already the latest version" + fi + fi +} + +usage() +{ + cat <&2 + exit 1 ;; + *) exit 1 ;; + esac +done + +if [[ $# == 0 ]]; then + usage +elif [[ $1 == "update" ]]; then + checkInternet || exit 1 # check if we have a valid internet connection if this isnt true the rest of the script will not work so stop here + update +elif [[ $1 == "help" ]]; then + usage +else + checkInternet || exit 1 # check if we have a valid internet connection if this isnt true the rest of the script will not work so stop here + getMovieInfo "$@" || exit 1 ## exit if we return 1 (chances are movie was not found) + printMovieInfo ## print out the data +fi diff --git a/top-ips.sh b/top-ips.sh new file mode 100644 index 0000000..873100a --- /dev/null +++ b/top-ips.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +read -p "Domain name: " DOMAIN +read -p "Where to save final report? " SAVE +read -p "Path to web server log file: " LOGFILE + +[ ! -d $SAVE ] && mkdir -p $SAVE + +if [[ -f $LOGFILE ]]; then + echo "Processing log for $DOMAIN ..." + touch $SAVE/$DOMAIN.txt + awk '{ print $1}' $LOGFILE | sort | uniq -c | sort -nr > $SAVE/$DOMAIN.txt + echo "Report written to $SAVE/$DOMAIN.txt" +fi diff --git a/turn-server-uploads.sh b/turn-server-uploads.sh new file mode 100644 index 0000000..f2e3e43 --- /dev/null +++ b/turn-server-uploads.sh @@ -0,0 +1,52 @@ +#!/bin/bash +# A simple shell script to turn on or off Apache / Nginx / Lighttpd web server upload +# by editing php.ini or custom.ini file +# Tested on : Debian 8 and Ubuntu LTS server but should work with any Linux and Unix-like system +# ---------------------------------------------------------------------------- +# Original Author: nixCraft + +# Path to ini file +cust="/etc/php5/mods-available/custom.ini" + +# Ubuntu command to reload php5-fpm +# Update this as per your need. For e.g. Debian 7.x or older use /sbin/service apache2 restart +# For RHEL/CentOS7 use /sbin/systemctl reload httpd.service +_reload="/sbin/restart php5-fpm" + +# Where is sed located? +_sed="/bin/sed" + +# Reload function +_reload(){ + echo "Reloading php5-fpm..." + $_reload +} + +# Turn on uploading +_on(){ + echo "Allowing uploads..." + $_sed -ie 's/file_uploads=Off/file_uploads=On/' $cust \ + && _reload +} + +# Turn off uploading +_off(){ + echo "Disabling uploads..." + $_sed -ie 's/file_uploads=On/file_uploads=Off/' $cust \ + && _reload +} + +# Get current status of uploading +_status(){ + echo "Current file upload status in ${cust}..." + grep -e --color '^file_upload' $cust +} + +# Main logic # +arg=$1 +case $arg in + [oO][nN]) _on;; + [oO][fF][fF]) _off;; + [sS][tT][aA][tT][uU][sS]) _status;; + *) echo "Usage: $0 [on|off|status]";; +esac \ No newline at end of file diff --git a/web-server.sh b/web-server.sh new file mode 100644 index 0000000..01cbb67 --- /dev/null +++ b/web-server.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +trap ctrl_c INT # Handle CTRL-C request +RESPONSE="HTTP/1.1 200 OK\r\nConnection: keep-alive\r\nServer: Simple Bash Server\r\nDate: $(date)\r\n" + +usage () { + echo -e "Usage: bash $0 [port]" +} + +ctrl_c () { + echo -e "\033[91mShutdown...\033[0m" + exit +} + +if [ $# -ne 1 ]; then # $# is number of passed arguments to script + usage + exit + +else + echo -e "Server started on port $1\n" + while true; do + echo -e $RESPONSE | nc -l -p $1 + done +fi