Open In App

Create a Log File in PowerShell Script

Last Updated : 23 Jan, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

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:

  • The first line of the script specifies that it should be executed using the bash shell.
  • The log_file variable stores the path to the log file that will be analyzed. This path should be updated to the path of the log file on the system.
  • The output_file variable stores the path to the file where the report will be saved. This path should be updated to a location on the system where the report can be saved.
  • The connection_time variable is initialized to 0 and will be used to store the cumulative connection time.
  • The script uses the grep command to extract all the unique month-year entries from the log file, these entries are stored in the months_years variable
  • Next script iterate through each unique month-year entry in the months_years variable
  • For each iteration, the script uses the grep command to extract all the entries from the log file that match the current month-year.
  • Then the script uses the awk command to extract the connection time, which is the second column of the log file, from the matches and stores it in the minutes variable.
  • Then it uses the cut command to remove the colon so that it is left with only the minutes and paste command to concatenate the minutes with a plus sign.
  • Then it uses the bc command to calculate the sum of minutes.
  • The script then adds the number of minutes for the current month and year to the cumulative connection time.
  • It then outputs the result for the current month and year and finally, after iterating through all the months and years, the script outputs the final cumulative connection time to the report file, along with a message “Total connection time: X minutes”.

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.


Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads