Skip to content

Instantly share code, notes, and snippets.

@tolbrino
Forked from diegoalzate/restart.sh
Created April 28, 2023 06:55
Show Gist options
  • Save tolbrino/489d3a0b62a75dea18574f7d2ee6026e to your computer and use it in GitHub Desktop.
Save tolbrino/489d3a0b62a75dea18574f7d2ee6026e to your computer and use it in GitHub Desktop.
restart hoprd nodes on rpch
#!/bin/bash
# Make API request and extract the IP addresses from the "hoprd_api_endpoint" field
ips=( $(curl --silent --request GET --url https://staging.discovery.rpch.tech/api/v1/node?status=READY | jq -r '.[].hoprd_api_endpoint | sub("http://"; "") | sub(":[0-9]*$"; "")') )
# Path to SSH private key for authentication
private_key_path=".ssh/id_rsa"
# Loop through the remote hosts and run the script on each one
for ip in "${ips[@]}"
do
# Get the machine name from the SSH connection
machine_name=$(ssh -i $private_key_path -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@$ip "hostname")
# Compress the log files on the remote host
ssh -i $private_key_path -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@$ip "cd \$(dirname \$(docker inspect --format='{{.LogPath}}' \$(docker ps -q -f name=hoprd))) && logs=\$(ls -t *[0-9a-f][0-9a-f][0-9a-f][0-9a-f]*-json.log* | head -n 2) && zip hoprd_logs_${machine_name}.zip \$logs"
# Get the ZIP file name and location on the remote host
zip_file=$(ssh -i $private_key_path -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@$ip "cd \$(dirname \$(docker inspect --format='{{.LogPath}}' \$(docker ps -q -f name=hoprd))) && ls -t hoprd_logs_${machine_name}.zip | head -n 1")
zip_location=$(ssh -i $private_key_path -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@$ip "cd \$(dirname \$(docker inspect --format='{{.LogPath}}' \$(docker ps -q -f name=hoprd))) && pwd")
# Copy the resulting ZIP archive to the local machine's Downloads folder
scp -i $private_key_path -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@$ip:$zip_location/$zip_file ~/Downloads/${machine_name}_hoprd_logs.zip
# Restart hoprd on the remote host
ssh -i $private_key_path -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@$ip "cd /home/rpch/RPCh/apps/exit-node/ && docker compose down && docker compose up -d"
# Delete the ZIP archive from the remote host
ssh -i $private_key_path -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@$ip "rm -f ~/hoprd_logs_*.zip"
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment