diff --git a/pull-logs.sh b/pull-logs.sh index e788a5e..11a4a7b 100644 --- a/pull-logs.sh +++ b/pull-logs.sh @@ -22,24 +22,27 @@ fi echo "Collecting logs from $START to $END" +# Temporary file to store logs +TEMP_LOG_FILE=$(mktemp) + # Function to check journalctl logs get_journalctl_logs() { if command -v journalctl &> /dev/null; then - echo "----- Journalctl Logs -----" - journalctl --since="$START" --until="$END" + echo "----- Journalctl Logs -----" >> "$TEMP_LOG_FILE" + journalctl --since="$START" --until="$END" >> "$TEMP_LOG_FILE" else - echo "journalctl not found, skipping..." + echo "journalctl not found, skipping..." >> "$TEMP_LOG_FILE" fi } # Function to check logs in /var/log get_var_log_logs() { - echo "----- /var/log Logs -----" + echo "----- /var/log Logs -----" >> "$TEMP_LOG_FILE" log_files=(/var/log/syslog /var/log/auth.log /var/log/kern.log /var/log/dmesg) for log in "${log_files[@]}"; do if [[ -f $log ]]; then - echo "Logs from $log" + echo "Logs from $log" >> "$TEMP_LOG_FILE" awk -v start="$START" -v end="$END" '{ logtime = $1 " " $2 " " $3 logtime_epoch = mktime(gensub(/-|:/, " ", "g", logtime)) @@ -48,22 +51,22 @@ get_var_log_logs() { if (logtime_epoch >= start_epoch && logtime_epoch <= end_epoch) { print $0 } - }' $log + }' $log >> "$TEMP_LOG_FILE" else - echo "$log not found, skipping..." + echo "$log not found, skipping..." >> "$TEMP_LOG_FILE" fi done } # Function to check logs of specific services like nginx or apache2 get_service_logs() { - echo "----- Service Logs (nginx, apache, mysql, etc.) -----" + echo "----- Service Logs (nginx, apache, mysql, etc.) -----" >> "$TEMP_LOG_FILE" service_logs=(/var/log/nginx/access.log /var/log/nginx/error.log /var/log/apache2/access.log /var/log/mysql/error.log) for log in "${service_logs[@]}"; do if [[ -f $log ]]; then - echo "Logs from $log" + echo "Logs from $log" >> "$TEMP_LOG_FILE" awk -v start="$START" -v end="$END" '{ logtime = $1 " " $2 logtime_epoch = mktime(gensub(/-|:/, " ", "g", logtime)) @@ -72,9 +75,9 @@ get_service_logs() { if (logtime_epoch >= start_epoch && logtime_epoch <= end_epoch) { print $0 } - }' $log + }' $log >> "$TEMP_LOG_FILE" else - echo "$log not found, skipping..." + echo "$log not found, skipping..." >> "$TEMP_LOG_FILE" fi done } @@ -83,3 +86,19 @@ get_service_logs() { get_journalctl_logs get_var_log_logs get_service_logs + +# Upload logs to hastebin server +if command -v curl &> /dev/null; then + RESPONSE=$(curl -s -X POST -H "Content-Type: text/plain" --data-binary "@${TEMP_LOG_FILE}" https://haste.nixc.us/documents) + if [[ $RESPONSE == *"key"* ]]; then + KEY=$(echo "$RESPONSE" | jq -r .key) + echo "Logs uploaded: https://haste.nixc.us/$KEY" + else + echo "Failed to upload logs to hastebin server." + fi +else + echo "curl not found, unable to upload logs." +fi + +# Clean up temporary file +rm "$TEMP_LOG_FILE"