Open In App

Create a Log File in PowerShell Script

In this article, we will be discussing a shell script that can be used to report the cumulative connection time for month/year entries found in a system log file. This script can be useful for network administrators or system administrators who need to analyze log files and get an overview of how much time a particular user or IP address has spent connected to the system. To make this task easier, we can use a shell script to automate the process of extracting this information from a log file. The script provided in this article can be used to report the cumulative connection time for month/year entries found in a system log file. It uses a combination of Linux commands like grep, awk, cut, pastes, and bc to extract the information from the log file and calculate the cumulative connection time. The script can be easily modified to suit the specific requirements of a particular system or log format. Additionally, this script is a basic example and can be extended in many ways to include more advanced filtering or computation.

The Script:

Here is the full script that can be used to generate a report of the cumulative connection time for month/year entries found in a log file:



#!/bin/bash

# Define the log file to be analyzed
log_file="/path/to/logfile.log"

# Define the output file for the report
output_file="/path/to/report.txt"

# Initialize a variable to store the cumulative connection time
connection_time=0

# Get a list of unique months and years from the log file
months_years=$(grep -oE "[A-Za-z]{3} [0-9]{4}" "$log_file" | sort | uniq)

# Loop through each month and year
for month_year in $months_years; do
    # Extract the number of minutes for the current month and year
    minutes=$(grep "$month_year" "$log_file" | awk '{print $2}' | cut -d ':' -f 2 | paste -sd+ - | bc)


    # Add the minutes to the cumulative connection time
    connection_time=$((connection_time + minutes))


    # Output the result to the report file
    echo "$month_year: $minutes minutes" >> "$output_file"

done

# Output the final cumulative connection time to the report file
echo "Total connection time: $connection_time minutes" >> "$output_file"

 

Explanation:

Sample Inputs and Outputs:

Input: A system log file containing the following entries:

Jan 2020: Connection from 192.168.1.100 for 10 minutes
Feb 2020: Connection from 192.168.1.100 for 20 minutes
Mar 2020: Connection from 192.168.1.100 for 30 minutes
Apr 2020: Connection from 192.168.1.100 for 15 minutes

 

Output: A report file with the following content:



Jan 2020: 10 minutes
Feb 2020: 20 minutes
Mar 2020: 30 minutes
Apr 2020: 15 minutes
Total connection time: 75 minutes

 

Conclusion:

The script provided in this article can be useful for network administrators or system administrators to quickly and easily analyze a log file and get an overview of the cumulative connection time for each month and year. It can be easily modified to suit the specific requirements of a particular system or log format. Additionally, this script is a basic example and can be extended in many ways to include more advanced filtering or computation. For example, to filter only certain IP addresses, usernames or timestamps, etc.

Article Tags :