Site Tools


marc:linux:bash_snippets

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
marc:linux:bash_snippets [2022/12/05 12:33] marcvmarc:linux:bash_snippets [2023/02/16 14:23] (current) – [Download files based on URLs in a file] marcv
Line 8: Line 8:
 expr 30 - 10           # 30 - 10 expr 30 - 10           # 30 - 10
 expr 30 / 10           # 30 / 10 expr 30 / 10           # 30 / 10
-expr 30 \* 4           # 30 x 4, needs exception!+expr 30 \* 4           # 30 x 4, needs escape!
 </code> </code>
  
Line 19: Line 19:
 else else
         echo "id_rsa does not exist"         echo "id_rsa does not exist"
 +fi
 +</code>
 +
 +===== Checking if directory exists: =====
 +<code>
 +if [[ -d ~/.ssh/ ]]
 +then
 +        echo "directory .ssh exists"
 +else
 +        echo "directory .ssh does not exist"
 +fi
 +</code>
 +
 +===== Checking if variable equals 200 =====
 +<code>
 +num = 200
 +if [[ $num -eq 200 ]]
 +then
 +        echo "$num equals 200"
 +else
 +        echo "$num does not equal 200"
 fi fi
 </code> </code>
Line 141: Line 162:
 fi</code> fi</code>
  
 +
 +===== Replace all files in a directory with empty files with the same name =====
 +<code>
 +#!/bin/bash
 +
 +# Get the directory path
 +echo "Enter the path to the directory: "
 +read dir_path
 +
 +# Check if the directory exists
 +if [ ! -d "$dir_path" ]; then
 +  echo "Error: Directory does not exist."
 +  exit 1
 +fi
 +
 +# Replace all files in the directory with empty files
 +for file in "$dir_path"/*; do
 +  if [ -f "$file" ]; then
 +    > "$file"
 +  fi
 +done
 +
 +echo "All files in the directory have been replaced with empty files."
 +</code>
 +
 +===== Find SSH logins =====
 +
 +:!: This script assumes that you have the sshpass package installed on your system. You can install it with the following command: sudo apt-get install sshpass (for Ubuntu) or brew install http://macappstore.org/sshpass/ (for macOS).
 +
 +<code>
 +#!/bin/bash
 +
 +servers_file="servers"
 +users_file="users"
 +passwords_file="passwords"
 +logins_file="logins.txt"
 +
 +# Check if the input files exist
 +if [ ! -f "$servers_file" ] || [ ! -f "$users_file" ] || [ ! -f "$passwords_file" ]; then
 +  echo "Error: One or more of the input files do not exist."
 +  exit 1
 +fi
 +
 +# Read the servers, users, and passwords into arrays
 +servers=($(cat "$servers_file"))
 +users=($(cat "$users_file"))
 +passwords=($(cat "$passwords_file"))
 +
 +# Loop through all combinations of servers, users, and passwords
 +for server in "${servers[@]}"; do
 +  for user in "${users[@]}"; do
 +    for password in "${passwords[@]}"; do
 +      # Try to ssh into the server with the current combination of user and password
 +      ssh_output=$(sshpass -p "$password" ssh "$user"@"$server" -o StrictHostKeyChecking=no -o ConnectTimeout=3 2>&1)
 +
 +      # Check if the ssh login was successful
 +      if [ "$?" -eq 0 ]; then
 +        echo "Successful ssh login to $server using account $user and password $password"
 +        echo "$server $user $password" >> "$logins_file"
 +      else
 +        echo "Failed ssh login to $server using account $user and password $password"
 +      fi
 +    done
 +  done
 +done
 +</code>
 +
 +===== Remove duplicate and empty lines from file =====
 +<code>
 +#!/bin/bash
 +
 +# Remove duplicate lines from url.txt and save to temp file
 +sort -u url.txt > temp.txt
 +
 +# Remove empty lines from temp file and save back to url.txt
 +grep -v "^$" temp.txt > url.txt
 +
 +# Remove temp file
 +rm temp.txt
 +</code>
 +
 +===== Download files based on URLs in a file =====
 +<code>
 +#!/bin/bash
 +
 +# read list of URLs from file
 +while read url; do
 +  # download file using wget
 +  wget "$url"
 +done < url.txt
 +</code>
 +
 +Do the same but check if file exists. If it does compare sizes and ask what to do.
 +
 +<code>#!/bin/bash
 +
 +# Read URLs from the url.txt file and download the files
 +while read url; do
 +    filename=$(basename "$url")
 +    if [ -e "$filename" ]; then
 +        local_size=$(wc -c <"$filename")
 +        remote_size=$(curl -sI "$url" | awk '/Content-Length/ {sub("\r",""); print $2}')
 +        if [ "$local_size" = "$remote_size" ]; then
 +            echo "$filename already exists and has the same file size. Skipping download."
 +            continue
 +        else
 +            read -p "A file with the name $filename already exists. Do you want to save the new file with a different name? (y/n) " response
 +            if [ "$response" = "y" ]; then
 +                read -p "Enter the new file name: " new_filename
 +                curl -L -o "$new_filename" "$url"
 +                echo "File saved as $new_filename."
 +            else
 +                echo "Skipping download of $filename."
 +            fi
 +        fi
 +    else
 +        curl -L -o "$filename" "$url"
 +        echo "Downloaded $filename."
 +    fi
 +done < url.txt
 +</code>
marc/linux/bash_snippets.1670239989.txt.gz · Last modified: (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki