diff --git a/2026/day-01/learning-plan.md b/2026/day-01/learning-plan.md new file mode 100644 index 000000000..3233f0273 --- /dev/null +++ b/2026/day-01/learning-plan.md @@ -0,0 +1,23 @@ +#My Learning Plan for 90 days +My name is Shivkumar Konnuri, I am from QA+Support background | Learnig DevOps and Cloud for next 90 days + +What i understand about DevOps +DevOps is a combination of Development & Operations, this means that development, operations and security team work together to build, deploy and maintain applications in a automated manner to reduce time for market. +Cloud Engineering means using cloud to build, deploy and maintain applications without managing physical servers and somme of the Cloud platforms are AWS, GCP and MS Azure. +A DevOps Engineer connects development, operations, and security teams to automate, deploy, monitor, and fix issues. + +Why I am learning DevOps and Cloud +I want here to be straight forward and dont want to beat around the bush. I want to learn devops for higher package, money, this doesnt means that i will do it for money sake only, i will learn the DevOps and Cloud engineering with my whole heart with full interest and also want to become an expert in DevOps and Cloud Engineering. If i become expert then only i can acheive my priority goal + +Where I Want to Reach in 90 Days (My Goals) +By the end of the 90 days i want a job in DevOps and Cloud Engineering field with a decent package. + +Rules I will follow to stay consistent: +I will complete each and every assignment given by Shubham bhai and also practice extra for consistency, and i will share my daily learnings on my GitHub and LinkedIn + +My Mindset and Execution +Currently my mindset is to just learn as i am very new to this DevOps world even if i have worked with linux, AIX and windows environment i will still learn them again and analyse what new things i will get to learn. +I will treat this as a job and Shubham bhai as my manager for the next 90 days so that I can master it by the end of 90 days + +Commitment Statement: +I am serious about pivotimg my role into DevOps. These 90 days are very very important for my future, my future will be decided on these 90 days, so i cant ignore this as its high time today i am 36 years old and earning very low. diff --git a/2026/day-02/linux-architecture-notes.md b/2026/day-02/linux-architecture-notes.md new file mode 100644 index 000000000..9d305757e --- /dev/null +++ b/2026/day-02/linux-architecture-notes.md @@ -0,0 +1,89 @@ +Linux Architecture, Processes and systemd + +The core concepts of Linux- + +Linux works on ASKH principle. + +A stands for Application +S stands for Shell +K stands for Kernel +H stands for Hardware + +The shell is a user interface that allows users to interact with the system, while applications and services communicate with the kernel using system calls. + +When you power ON the system BIOS/UEFI loads the GNU GRUB which initializes the kernel, the kernel mounts the root filesystem and starts the systemd (PID 1), which initiazies user space services like system libraries, shell, system utilities and applications. Key concepts of linux include treating all devices as files and managing processes. + +In Linux we say Everything is a file or a file like device and and running programs are managed as processes.. For eg even if you install an application on the linux it will be considered a file or a directory and if you copy the file or start an application both are process to linux. + +Note that init/systemd is the first process in the linux + +How Processes are created and managed - + +When you run a command or start an application, linux creates a copy of existing process and then changes the copied process with the command you have run and then kernel will decide when the process gets CPU time, it gives memory to execute the process and later waits for command to be executed and then terminates process of the run command and this process is call fork-exec process + +Fork is duplicating the existing process and exec is replacing the duplicated process with a process that user is running. + +For eg you are running a ls command, as this is a shell command first linux will create a copy of shell process, the copy of shell process is replaced with ls command process, then kernel manages this ls process by giving it CPU time, provides memory and lets it finish and then removes that process + +Manages + +What systemd does and why it matters? + +Systemd is the boss of the system. When linux starts systemd is the first program to start, it main job is to start, stop and manage all other programs and services on the system. + +Starts services when the system boots + Eg - network, SSH, web server +Stops services when system shuts down +Keeps services running, i.e. if any service crashes it helps in restarting the service automatically +Starts the services in a particular order for eg it starts network services before apps +Manages system states such as Boot, shutdown, reboot and rescue mode. + +Systemd is important because it provides faster boot time, automatic recovery of service, easy service management. + +Linux Process States - +Running (R) +Process is using CPU or ready to run +Example: a script currently executing + +Sleeping (S) +Waiting for something (input, network, disk) +Most processes stay in this state + +Uninterruptible Sleep (D) +Waiting for I/O (disk, network) +Cannot be killed easily + +Zombie (Z) +Process finished execution +Parent didn’t clean it up +Uses no CPU, but still listed + +Stopped (T) +Process paused manually +Example: pressed Ctrl + C + +Linux Command used daily - +cd - Change directory +This command is used to navigate into directories + +cp - copy command +This command is used to copy files and directories from source to destination + +mv - Move / rename command +This command is used move the files and directory to a different location or rename the existing filename or directory name. + +cat - Open and view the contents in a file +This command is used to view whats written in the file + +touch - Creata file command +This command creates an empty file without data. + + + + + + + + + + diff --git a/2026/day-03/linux-commands-cheatsheet.md b/2026/day-03/linux-commands-cheatsheet.md new file mode 100644 index 000000000..b795b6eb0 --- /dev/null +++ b/2026/day-03/linux-commands-cheatsheet.md @@ -0,0 +1,37 @@ +**Linux Commands Cheatsheet** + +**Process Management Commands** + +1. ps \- This command shows the processes that are executed in the current terminal +2. ps \-a \- This command shows the process of other terminals as well but not fully +3. ps \-u \- This command shows which particular process is started which user +4. ps \-x \- This command shows background system process +5. ps aux \- This command combines above all three commands (command 2, 3 and 4\) and shows the output this means it shows all users, all terminals and all background processes. +6. ps aux | grep sshd \- This command is used to find a particular process in the given command i am trying to find sshd process +7. top \- This is real time command which shows, the processes that are currently running and it also shows how much a particular command is consuming CPU and memory +8. kill PID \- This command is used kill a particular process. Here PID means each process will a specific id and we call it as either pid or process id +9. kill \-9 PID \- This command is used to forcibly kill a process. + +**File System Commands** + +1. pwd \- This command prints the current working directory, means currently in which directory you are present or located for eg if you are /home/ubuntu after entering this command it will print /home/ubuntu. +2. ls \- list the files and the directories in the directory which you are located. For eg \- if you enter ls command in /home/ubuntu/ it will show./list the files and directories located in the /home/ubuntu path +3. ls \-l \- This command will list files in detailed format i.e. it will show the permission of the file, filename, size of the file, modified date time of the file, ownership of the file +4. cat file.txt \- shows the contents of the file +5. less file.txt \- shows the chunk/part of a huge file +6. nano file.txt \- Edits the file. +7. vi file.txt \- edit the file +8. df \-h \- This command is used to check the disk space +9. du \-sh folder \- This shows the size of the folder. +10. tail \-f file.log \- This shows the real time / live updating contents in the file, this is specially used to check log files for live troubleshooting + +**Networking commands** + +1. ip a \- This shows the ips that a machine have. +2. curl [ifconfig.me](http://ifconfig.me) \- This shows the public ip or the ip that internet sees of your server +3. ip route \- This shows how traffic leaves your system +4. hostname \- This shows system’s network name +5. ping [google.com](http://google.com) \- It checks whether your server can reach other system/server. +6. nslookup [google.com](http://google.com) \- it will resolve ot display the ip address behind the domain name +7. curl \- this command is used to check whether the particular site/api responds. +8. dig \- This is a detailed version of nslookup. \ No newline at end of file diff --git a/2026/day-04/linux-practice.pdf b/2026/day-04/linux-practice.pdf new file mode 100644 index 000000000..9e6eb5a0c Binary files /dev/null and b/2026/day-04/linux-practice.pdf differ diff --git a/2026/day-05/linux-troubleshooting-runbook.pdf b/2026/day-05/linux-troubleshooting-runbook.pdf new file mode 100644 index 000000000..1b56d6175 Binary files /dev/null and b/2026/day-05/linux-troubleshooting-runbook.pdf differ diff --git a/2026/day-06/file-io-practice.md b/2026/day-06/file-io-practice.md new file mode 100644 index 000000000..0e82796da --- /dev/null +++ b/2026/day-06/file-io-practice.md @@ -0,0 +1,30 @@ +**Day 6 \- Linux Fundamentals : Read and Write Text Files** + +Todays goal was to focus on basic linux file read and write operations. + +**File Creation \-** + +Command \- touch file.txt +Description \- This command creates a blank file + +**Writing to a File \-** + +Command \- echo “Line 1” \> file.txt +Description \- This command will write the text “Line 1” in file.txt and also note that if file.txt has some data in it, it will be replaced by the text “Line 1” + +Command \- echo “Line 2” \>\> file.txt +Description \- This command appends text to the file without replacing existing content. For eg if file.txt has “Line 1” as data then after entering the above command text “Line 2” will be written in the next line without replacing the text “Line 1” in the file. + +Command \- echo “Line 3” | tee \-a file.txt +Description \- This also does the same operation as echo “Line 2” \>\> file.txt but it also displays the line on the screen which will be appended in the file. In above command it will display text “Line 3” on the screen as well as it will write the same text in the file.txt + +**Reading the File \-** + +Command \- cat file.txt +Description \- This command is used to read the full file at once + +Command \- head \-n 2 file.txt +Description \- This command is used to read only first two lines of the file + +Command \- tail \-n 2 file.txt +Description \- This command is used to read only last two lines of the file \ No newline at end of file diff --git a/2026/day-07/Day7- Linux Filesyatem Hierarchy and Troubleshooting Issues.md b/2026/day-07/Day7- Linux Filesyatem Hierarchy and Troubleshooting Issues.md new file mode 100644 index 000000000..363b2f297 --- /dev/null +++ b/2026/day-07/Day7- Linux Filesyatem Hierarchy and Troubleshooting Issues.md @@ -0,0 +1,174 @@ +**Linux Filesystem Hierarchy and Troubleshooting Issues** + +**Directory** \- / + +**What does it contains?** +/ directory is the top most directory of filesystem hierarchy in linux. All files and directories are organized under this directory, making it as the starting point of the filesystem + +**Files and folders i noticed from ls \-l /** + +* /etc/bin + +**I would use this when…** +I would use this when i need to navigate to any directory in the system and also it helps understanding the overall filestructure + +### **Directory \- /home** + +**What it contains (1–2 lines):** + It contains the home (workspace) directories of individual users, where each user stores their personal files, configurations, and data. + +**Files/Folders I noticed from ls \-l /home:** + +* ubuntu +* Shivkumar + +**I would use this when…** + I would use this when I need to access or manage files, configurations, or permissions related to a specific user account. + +### **Directory \- /root** + +**What it contains (1–2 lines):** +It contains files and configuration related to the root user + +**Files/Folders I noticed from ls \-l /root:** +I am getting permission denied, but when i entered sudo ls \-l /root i am able to see one file named snap + +**I would use this when…** +I would use this when performing administrative or system-level tasks that require root access + +### **Directory: /etc** + +**What it contains (1–2 lines):** + It contains system-wide configuration files and directories for both installed and preinstalled services such as SSH, cron, systemd, nginx, docker, and others. + +**Files/Folders I noticed from ls \-l /etc:** + +* Configuration files ending with .conf +* Service directories like ssh, nginx, docker, cron, systemd, and python3 + +**I would use this when…** +I would use this when I need to configure, modify, or troubleshoot system and service-level settings. + +### **Directory: /var/log** + +**What it contains (1–2 lines):** + It contains log files generated by the system and various services, which record events, errors, and system activity. + +**Files/Folders I noticed from ls \-l /var/log:** + +* syslog +* Files with .log extension +* Directories like journal, chrony, and apt + +**I would use this when…** + I would use this when I need to troubleshoot issues, investigate errors, or check the behavior of system and application services. + +### **Directory: /tmp** + +**What it contains (1–2 lines):** + It contains temporary files and directories created by the system and applications for short-term use. + +**Files/Folders I noticed from ls \-l /var/log:** + +* syslog +* Files with .log extension +* Directories like journal, chrony, and apt + +**I would use this when…** +I would use this when I need a temporary location for files during testing or when cleaning up temporary data to free system space. + +### **Directory: /bin** + +**What it contains (1–2 lines):** + It contains essential command binaries such as cp, ls, and mkdir, which are required for basic system operation and are available even in recovery mode. + +**Files/Folders I noticed from ls \-l /bin:** + +* cp +* ls +* mkdir + +**I would use this when…** +I would use this when performing basic file and system operations, especially during troubleshooting or recovery scenarios. + +### + +### + +### + +### + +### + +### **Directory: /usr/bin** + +**What it contains (1–2 lines):** + It contains user-level command binaries used for normal day-to-day operations, such as editors, compression tools, and other utilities that are not required for minimal system boot. + +**Files/Folders I noticed from ls \-l /usr/bin:** + +* zcat +* zip +* gunzip +* vim + +**I would use this when…** + I would use this when performing regular user tasks such as editing files, compressing or extracting files, and running common utilities during normal system usage. + +### **Directory: /opt** + +**What it contains (1–2 lines):** + It contains optional or third-party software installed separately from the operating system, such as container runtimes or vendor applications. + +**Files/Folders I noticed from ls \-l /opt:** + +* containerd + +**I would use this when…** + I would use this when installing or managing third-party applications or tools that are not part of the default Linux system packages. + +After running below command, i found that the largest logfile in the /var/log directory is journal +du \-sh /var/log/\* 2\>/dev/null | sort \-h | tail \-5 + +Cat /etc/hostname \- returns hostname of the server + +ls \-la \~ \- returns all files including the files that start with . + +**Part 2** + +Scenario 1: Service Not Starting + +A web application service called 'myapp' failed to start after a server reboot. What commands would you run to diagnose the issue? Write at least 4 commands in order. + +1. systemctl status myapp– to check whether system is or no +2. systemctl is-enabled myapp \- to check whether it is enabled to start automatically after boot +3. journalctl \-u myapp \- to check logs for errors +4. systemctl start myapp \- try starting the app +5. journalctl \-u myapp \-b- this is used to check the logs from just last boot +6. systemctl enable myapp \- It enables to start automatically after boot + +Scenario 2: High CPU Usage + +Your manager reports that the application server is slow. You SSH into the server. What commands would you run to identify which process is using high CPU? + +1. top \- check the total cpu usage of the system +2. htop \- check enhanced view of top +3. ps aux \--sort=-%cpu | head \-10 \- this is used to check which process is consuming high cpu + +Scenario 3: Finding Service Logs + +A developer asks: "Where are the logs for the 'docker' service?" The service is managed by systemd. What commands would you use? + +1. systemctl status docker \- check status of docker +2. Journalctl \-u docker \-n 10 \- check last 10 lines of logs of docker service +3. journalctl \-u docker \-f \- realtime logs of docker service + +Scenario 4: File Permissions Issue + +A script at /home/user/backup.sh is not executing. When you run it: ./backup.sh You get: "Permission denied" What commands would you use to fix this? + +1. ls \-l /home/user/backup.sh \- check permissions +2. chmod \+x /home/user/[backup.sh](http://backup.sh) \- this command will assign execute permission to [backup.sh](http://backup.sh) file +3. ls \-l /home/user/backup.sh \- verify permissions +4. ./[backup.sh](http://backup.sh) – try running backup.sh \ No newline at end of file diff --git a/2026/day-08/Day 8 - Cloud Server Setup_ Docker, Nginx & Web Deployment.md b/2026/day-08/Day 8 - Cloud Server Setup_ Docker, Nginx & Web Deployment.md new file mode 100644 index 000000000..cf6f02961 --- /dev/null +++ b/2026/day-08/Day 8 - Cloud Server Setup_ Docker, Nginx & Web Deployment.md @@ -0,0 +1,17 @@ +**Day 8 \- Cloud Server Setup: Docker, Nginx & Web Deployment** + +Step 1 \- I launched an EC2 instance and during launching i created private key for connecting server using ssh +Step 2 \- I navigated to security group and selected the security group which was attached to my instance and then enable inbound rule HTTP 80 port for all IPs +Step 3 \- I connected to the server using ssh command \- ssh \-i "D:\\Devops\\Private Key\\Linux-For-DevOPS\_Key.pem" [ubuntu@ec2-43-204-108-136.ap-south-1.compute.amazonaws.com](mailto:ubuntu@ec2-43-204-108-136.ap-south-1.compute.amazonaws.com) +Step 4 \- I updated package manage apt using command sudo apt update +Step 5 \- I installed nginx service on my EC2 ubuntu instance by using command sudo apt install nginx +Step 6 \- I checked the status of nginx service systemctl status nginx +Step 7 \- I collected logs using of nginx service using command journalctl \-u nginx \-n 100 +Step 8 \- i even checked the logs in /var/log path and saved the logs in a file nginx\_access\_log.txt by using command cat /var/log/nginx/access.log tail \-n 100 /var/log/nginx/error.log \> nginx\_all\_logs.txt +Step 9 \- I installed docker using command sudo apt install [docker.io](http://docker.io) +Step 10 \- I checked status of docker using command systemctl status docker +Step 11 \- I checked whether docker and nginx are enabled for starting after boot using command systemctl is-enabled nginx and systemctl is-enabled docker. +Step 12 \- I checked the logs of docker and saved them in a file using command journalctl \-u docker \-n 100 \> docker\_log.txt and verified that there are no errors during startup +Step 13 \- i accessed http url and checked whether nginx default page is opening on 80 port or not using url [http://43.204.108.136/](http://http://43.204.108.136/) + +I did not face any issues or challenges i did it in one go diff --git a/2026/day-08/docker_log.txt b/2026/day-08/docker_log.txt new file mode 100644 index 000000000..515515d0a --- /dev/null +++ b/2026/day-08/docker_log.txt @@ -0,0 +1,104 @@ +Jan 26 15:17:05 ip-172-31-13-238 dockerd[824]: time="2026-01-26T15:17:05.913679888Z" level=info msg="Completed buildkit initialization" +Jan 26 15:17:05 ip-172-31-13-238 dockerd[824]: time="2026-01-26T15:17:05.923499544Z" level=info msg="Daemon has completed initialization" +Jan 26 15:17:05 ip-172-31-13-238 dockerd[824]: time="2026-01-26T15:17:05.923560266Z" level=info msg="API listen on /run/docker.sock" +Jan 26 15:17:05 ip-172-31-13-238 systemd[1]: Started docker.service - Docker Application Container Engine. +Jan 26 15:18:18 ip-172-31-13-238 dockerd[824]: time="2026-01-26T15:18:18.197924489Z" level=info msg="Processing signal 'terminated'" +Jan 26 15:18:18 ip-172-31-13-238 systemd[1]: Stopping docker.service - Docker Application Container Engine... +Jan 26 15:18:18 ip-172-31-13-238 dockerd[824]: time="2026-01-26T15:18:18.213600795Z" level=info msg="stopping event stream following graceful shutdown" error="" module=libcontainerd namespace=moby +Jan 26 15:18:18 ip-172-31-13-238 dockerd[824]: time="2026-01-26T15:18:18.215651905Z" level=info msg="Daemon shutdown complete" +Jan 26 15:18:18 ip-172-31-13-238 systemd[1]: docker.service: Deactivated successfully. +Jan 26 15:18:18 ip-172-31-13-238 systemd[1]: Stopped docker.service - Docker Application Container Engine. +-- Boot 3c717d0c5ff54134a5744918542cf033 -- +Jan 26 15:19:22 ip-172-31-13-238 systemd[1]: Starting docker.service - Docker Application Container Engine... +Jan 26 15:19:23 ip-172-31-13-238 dockerd[860]: time="2026-01-26T15:19:23.150399948Z" level=info msg="Starting up" +Jan 26 15:19:23 ip-172-31-13-238 dockerd[860]: time="2026-01-26T15:19:23.154992960Z" level=info msg="OTEL tracing is not configured, using no-op tracer provider" +Jan 26 15:19:23 ip-172-31-13-238 dockerd[860]: time="2026-01-26T15:19:23.158636820Z" level=info msg="detected 127.0.0.53 nameserver, assuming systemd-resolved, so using resolv.conf: /run/systemd/resolve/resolv.conf" +Jan 26 15:19:23 ip-172-31-13-238 dockerd[860]: time="2026-01-26T15:19:23.372674673Z" level=info msg="Creating a containerd client" address=/run/containerd/containerd.sock timeout=1m0s +Jan 26 15:19:23 ip-172-31-13-238 dockerd[860]: time="2026-01-26T15:19:23.441138154Z" level=info msg="[graphdriver] using prior storage driver: overlay2" +Jan 26 15:19:23 ip-172-31-13-238 dockerd[860]: time="2026-01-26T15:19:23.447375172Z" level=info msg="Loading containers: start." +Jan 26 15:19:23 ip-172-31-13-238 dockerd[860]: time="2026-01-26T15:19:23.787711948Z" level=warning msg="Error (Unable to complete atomic operation, key modified) deleting object [endpoint_count 193d4fea91592ef1e6ef826fc348b260afacadcb0b2479f1b66ab3c81a326f1c], retrying...." +Jan 26 15:19:23 ip-172-31-13-238 dockerd[860]: time="2026-01-26T15:19:23.830946496Z" level=info msg="Loading containers: done." +Jan 26 15:19:23 ip-172-31-13-238 dockerd[860]: time="2026-01-26T15:19:23.863009437Z" level=info msg="Docker daemon" commit="28.2.2-0ubuntu1~24.04.1" containerd-snapshotter=false storage-driver=overlay2 version=28.2.2 +Jan 26 15:19:23 ip-172-31-13-238 dockerd[860]: time="2026-01-26T15:19:23.864179484Z" level=info msg="Initializing buildkit" +Jan 26 15:19:23 ip-172-31-13-238 dockerd[860]: time="2026-01-26T15:19:23.870073035Z" level=warning msg="CDI setup error /etc/cdi: failed to monitor for changes: no such file or directory" +Jan 26 15:19:23 ip-172-31-13-238 dockerd[860]: time="2026-01-26T15:19:23.870099095Z" level=warning msg="CDI setup error /var/run/cdi: failed to monitor for changes: no such file or directory" +Jan 26 15:19:23 ip-172-31-13-238 dockerd[860]: time="2026-01-26T15:19:23.886459425Z" level=info msg="Completed buildkit initialization" +Jan 26 15:19:23 ip-172-31-13-238 dockerd[860]: time="2026-01-26T15:19:23.896171863Z" level=info msg="Daemon has completed initialization" +Jan 26 15:19:23 ip-172-31-13-238 systemd[1]: Started docker.service - Docker Application Container Engine. +Jan 26 15:19:23 ip-172-31-13-238 dockerd[860]: time="2026-01-26T15:19:23.896574178Z" level=info msg="API listen on /run/docker.sock" +Jan 27 08:39:59 ip-172-31-13-238 systemd[1]: Stopping docker.service - Docker Application Container Engine... +Jan 27 08:39:59 ip-172-31-13-238 dockerd[860]: time="2026-01-27T08:39:59.919246067Z" level=info msg="Processing signal 'terminated'" +Jan 27 08:39:59 ip-172-31-13-238 dockerd[860]: time="2026-01-27T08:39:59.989880645Z" level=info msg="Daemon shutdown complete" +Jan 27 08:40:00 ip-172-31-13-238 systemd[1]: docker.service: Deactivated successfully. +Jan 27 08:40:00 ip-172-31-13-238 systemd[1]: Stopped docker.service - Docker Application Container Engine. +Jan 27 08:40:00 ip-172-31-13-238 systemd[1]: docker.service: Consumed 6.159s CPU time, 93.5M memory peak, 0B memory swap peak. +-- Boot b7db2cb3965049ef97333809d1039749 -- +Jan 27 08:44:18 ip-172-31-13-238 systemd[1]: Starting docker.service - Docker Application Container Engine... +Jan 27 08:44:19 ip-172-31-13-238 dockerd[833]: time="2026-01-27T08:44:19.461009926Z" level=info msg="Starting up" +Jan 27 08:44:19 ip-172-31-13-238 dockerd[833]: time="2026-01-27T08:44:19.468943463Z" level=info msg="OTEL tracing is not configured, using no-op tracer provider" +Jan 27 08:44:19 ip-172-31-13-238 dockerd[833]: time="2026-01-27T08:44:19.473990049Z" level=info msg="detected 127.0.0.53 nameserver, assuming systemd-resolved, so using resolv.conf: /run/systemd/resolve/resolv.conf" +Jan 27 08:44:19 ip-172-31-13-238 dockerd[833]: time="2026-01-27T08:44:19.630923247Z" level=info msg="Creating a containerd client" address=/run/containerd/containerd.sock timeout=1m0s +Jan 27 08:44:19 ip-172-31-13-238 dockerd[833]: time="2026-01-27T08:44:19.721735187Z" level=info msg="[graphdriver] using prior storage driver: overlay2" +Jan 27 08:44:19 ip-172-31-13-238 dockerd[833]: time="2026-01-27T08:44:19.727185495Z" level=info msg="Loading containers: start." +Jan 27 08:44:20 ip-172-31-13-238 dockerd[833]: time="2026-01-27T08:44:20.129830337Z" level=warning msg="Error (Unable to complete atomic operation, key modified) deleting object [endpoint_count f7419789ee62a53b10074026638fa246896229e0816bbefc326f938cccf80e3f], retrying...." +Jan 27 08:44:20 ip-172-31-13-238 dockerd[833]: time="2026-01-27T08:44:20.182101303Z" level=info msg="Loading containers: done." +Jan 27 08:44:20 ip-172-31-13-238 dockerd[833]: time="2026-01-27T08:44:20.222159129Z" level=info msg="Docker daemon" commit="28.2.2-0ubuntu1~24.04.1" containerd-snapshotter=false storage-driver=overlay2 version=28.2.2 +Jan 27 08:44:20 ip-172-31-13-238 dockerd[833]: time="2026-01-27T08:44:20.222708567Z" level=info msg="Initializing buildkit" +Jan 27 08:44:20 ip-172-31-13-238 dockerd[833]: time="2026-01-27T08:44:20.229338028Z" level=warning msg="CDI setup error /etc/cdi: failed to monitor for changes: no such file or directory" +Jan 27 08:44:20 ip-172-31-13-238 dockerd[833]: time="2026-01-27T08:44:20.229377155Z" level=warning msg="CDI setup error /var/run/cdi: failed to monitor for changes: no such file or directory" +Jan 27 08:44:20 ip-172-31-13-238 dockerd[833]: time="2026-01-27T08:44:20.248380289Z" level=info msg="Completed buildkit initialization" +Jan 27 08:44:20 ip-172-31-13-238 dockerd[833]: time="2026-01-27T08:44:20.258542457Z" level=info msg="Daemon has completed initialization" +Jan 27 08:44:20 ip-172-31-13-238 dockerd[833]: time="2026-01-27T08:44:20.258630120Z" level=info msg="API listen on /run/docker.sock" +Jan 27 08:44:20 ip-172-31-13-238 systemd[1]: Started docker.service - Docker Application Container Engine. +Jan 27 11:21:47 ip-172-31-13-238 systemd[1]: Stopping docker.service - Docker Application Container Engine... +Jan 27 11:21:47 ip-172-31-13-238 dockerd[833]: time="2026-01-27T11:21:47.287524743Z" level=info msg="Processing signal 'terminated'" +Jan 27 11:21:47 ip-172-31-13-238 dockerd[833]: time="2026-01-27T11:21:47.289228807Z" level=info msg="Daemon shutdown complete" +Jan 27 11:21:47 ip-172-31-13-238 systemd[1]: docker.service: Deactivated successfully. +Jan 27 11:21:47 ip-172-31-13-238 systemd[1]: Stopped docker.service - Docker Application Container Engine. +Jan 27 11:21:47 ip-172-31-13-238 systemd[1]: docker.service: Consumed 1.469s CPU time. +-- Boot f6fdb880858345f2846d1658f289db99 -- +Jan 27 11:22:58 ip-172-31-13-238 systemd[1]: Starting docker.service - Docker Application Container Engine... +Jan 27 11:22:59 ip-172-31-13-238 dockerd[847]: time="2026-01-27T11:22:59.146070031Z" level=info msg="Starting up" +Jan 27 11:22:59 ip-172-31-13-238 dockerd[847]: time="2026-01-27T11:22:59.153097857Z" level=info msg="OTEL tracing is not configured, using no-op tracer provider" +Jan 27 11:22:59 ip-172-31-13-238 dockerd[847]: time="2026-01-27T11:22:59.156868123Z" level=info msg="detected 127.0.0.53 nameserver, assuming systemd-resolved, so using resolv.conf: /run/systemd/resolve/resolv.conf" +Jan 27 11:22:59 ip-172-31-13-238 dockerd[847]: time="2026-01-27T11:22:59.341661285Z" level=info msg="Creating a containerd client" address=/run/containerd/containerd.sock timeout=1m0s +Jan 27 11:22:59 ip-172-31-13-238 dockerd[847]: time="2026-01-27T11:22:59.427982543Z" level=info msg="[graphdriver] using prior storage driver: overlay2" +Jan 27 11:22:59 ip-172-31-13-238 dockerd[847]: time="2026-01-27T11:22:59.432788586Z" level=info msg="Loading containers: start." +Jan 27 11:22:59 ip-172-31-13-238 dockerd[847]: time="2026-01-27T11:22:59.840198216Z" level=warning msg="Error (Unable to complete atomic operation, key modified) deleting object [endpoint_count 39db68dd83851ae1baa980519b1697053c96e0cf72df1024a432e1fcbc35f27f], retrying...." +Jan 27 11:22:59 ip-172-31-13-238 dockerd[847]: time="2026-01-27T11:22:59.888909011Z" level=info msg="Loading containers: done." +Jan 27 11:22:59 ip-172-31-13-238 dockerd[847]: time="2026-01-27T11:22:59.923231339Z" level=info msg="Docker daemon" commit="28.2.2-0ubuntu1~24.04.1" containerd-snapshotter=false storage-driver=overlay2 version=28.2.2 +Jan 27 11:22:59 ip-172-31-13-238 dockerd[847]: time="2026-01-27T11:22:59.923827352Z" level=info msg="Initializing buildkit" +Jan 27 11:22:59 ip-172-31-13-238 dockerd[847]: time="2026-01-27T11:22:59.930208985Z" level=warning msg="CDI setup error /etc/cdi: failed to monitor for changes: no such file or directory" +Jan 27 11:22:59 ip-172-31-13-238 dockerd[847]: time="2026-01-27T11:22:59.930247381Z" level=warning msg="CDI setup error /var/run/cdi: failed to monitor for changes: no such file or directory" +Jan 27 11:22:59 ip-172-31-13-238 dockerd[847]: time="2026-01-27T11:22:59.949936304Z" level=info msg="Completed buildkit initialization" +Jan 27 11:22:59 ip-172-31-13-238 dockerd[847]: time="2026-01-27T11:22:59.957904823Z" level=info msg="Daemon has completed initialization" +Jan 27 11:22:59 ip-172-31-13-238 dockerd[847]: time="2026-01-27T11:22:59.958383769Z" level=info msg="API listen on /run/docker.sock" +Jan 27 11:22:59 ip-172-31-13-238 systemd[1]: Started docker.service - Docker Application Container Engine. +Jan 30 03:52:51 ip-172-31-13-238 systemd[1]: Stopping docker.service - Docker Application Container Engine... +Jan 30 03:52:51 ip-172-31-13-238 dockerd[847]: time="2026-01-30T03:52:51.199935484Z" level=info msg="Processing signal 'terminated'" +Jan 30 03:52:51 ip-172-31-13-238 dockerd[847]: time="2026-01-30T03:52:51.294390727Z" level=info msg="Daemon shutdown complete" +Jan 30 03:52:51 ip-172-31-13-238 systemd[1]: docker.service: Deactivated successfully. +Jan 30 03:52:51 ip-172-31-13-238 systemd[1]: Stopped docker.service - Docker Application Container Engine. +Jan 30 03:52:51 ip-172-31-13-238 systemd[1]: docker.service: Consumed 24.626s CPU time, 94.8M memory peak, 0B memory swap peak. +-- Boot 50b9212abe9042cb9b8370fab9694a13 -- +Jan 30 08:42:37 ip-172-31-13-238 systemd[1]: Starting docker.service - Docker Application Container Engine... +Jan 30 08:42:38 ip-172-31-13-238 dockerd[830]: time="2026-01-30T08:42:38.245914625Z" level=info msg="Starting up" +Jan 30 08:42:38 ip-172-31-13-238 dockerd[830]: time="2026-01-30T08:42:38.251773728Z" level=info msg="OTEL tracing is not configured, using no-op tracer provider" +Jan 30 08:42:38 ip-172-31-13-238 dockerd[830]: time="2026-01-30T08:42:38.254080318Z" level=info msg="detected 127.0.0.53 nameserver, assuming systemd-resolved, so using resolv.conf: /run/systemd/resolve/resolv.conf" +Jan 30 08:42:38 ip-172-31-13-238 dockerd[830]: time="2026-01-30T08:42:38.437214641Z" level=info msg="Creating a containerd client" address=/run/containerd/containerd.sock timeout=1m0s +Jan 30 08:42:38 ip-172-31-13-238 dockerd[830]: time="2026-01-30T08:42:38.532029840Z" level=info msg="[graphdriver] using prior storage driver: overlay2" +Jan 30 08:42:38 ip-172-31-13-238 dockerd[830]: time="2026-01-30T08:42:38.538696724Z" level=info msg="Loading containers: start." +Jan 30 08:42:38 ip-172-31-13-238 dockerd[830]: time="2026-01-30T08:42:38.990819041Z" level=warning msg="Error (Unable to complete atomic operation, key modified) deleting object [endpoint_count 72ef17e9598dfcc55ff38678fa8566e34cb335864da77d3c43bea762e50f5f18], retrying...." +Jan 30 08:42:39 ip-172-31-13-238 dockerd[830]: time="2026-01-30T08:42:39.037219017Z" level=info msg="Loading containers: done." +Jan 30 08:42:39 ip-172-31-13-238 dockerd[830]: time="2026-01-30T08:42:39.073487783Z" level=info msg="Docker daemon" commit="28.2.2-0ubuntu1~24.04.1" containerd-snapshotter=false storage-driver=overlay2 version=28.2.2 +Jan 30 08:42:39 ip-172-31-13-238 dockerd[830]: time="2026-01-30T08:42:39.074162566Z" level=info msg="Initializing buildkit" +Jan 30 08:42:39 ip-172-31-13-238 dockerd[830]: time="2026-01-30T08:42:39.079730866Z" level=warning msg="CDI setup error /var/run/cdi: failed to monitor for changes: no such file or directory" +Jan 30 08:42:39 ip-172-31-13-238 dockerd[830]: time="2026-01-30T08:42:39.079758137Z" level=warning msg="CDI setup error /etc/cdi: failed to monitor for changes: no such file or directory" +Jan 30 08:42:39 ip-172-31-13-238 dockerd[830]: time="2026-01-30T08:42:39.097760781Z" level=info msg="Completed buildkit initialization" +Jan 30 08:42:39 ip-172-31-13-238 dockerd[830]: time="2026-01-30T08:42:39.107976508Z" level=info msg="Daemon has completed initialization" +Jan 30 08:42:39 ip-172-31-13-238 dockerd[830]: time="2026-01-30T08:42:39.108024321Z" level=info msg="API listen on /run/docker.sock" +Jan 30 08:42:39 ip-172-31-13-238 systemd[1]: Started docker.service - Docker Application Container Engine. +Jan 31 06:25:36 ip-172-31-13-238 dockerd[830]: time="2026-01-31T06:25:36.771333955Z" level=error msg="Failed to get event" error="rpc error: code = Unavailable desc = error reading from server: EOF" module=libcontainerd namespace=plugins.moby +Jan 31 06:25:36 ip-172-31-13-238 dockerd[830]: time="2026-01-31T06:25:36.771334330Z" level=error msg="Failed to get event" error="rpc error: code = Unavailable desc = error reading from server: EOF" module=libcontainerd namespace=moby +Jan 31 06:25:36 ip-172-31-13-238 dockerd[830]: time="2026-01-31T06:25:36.773673063Z" level=info msg="Waiting for containerd to be ready to restart event processing" module=libcontainerd namespace=plugins.moby +Jan 31 06:25:36 ip-172-31-13-238 dockerd[830]: time="2026-01-31T06:25:36.773678244Z" level=info msg="Waiting for containerd to be ready to restart event processing" module=libcontainerd namespace=moby diff --git a/2026/day-08/nginx_access_log.txt b/2026/day-08/nginx_access_log.txt new file mode 100644 index 000000000..e12998c15 --- /dev/null +++ b/2026/day-08/nginx_access_log.txt @@ -0,0 +1,100 @@ +109.172.55.25 - - [02/Feb/2026:00:32:30 +0000] "GET /phpunit/phpunit/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:30 +0000] "GET /phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:30 +0000] "GET /phpunit/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:30 +0000] "GET /lib/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:30 +0000] "GET /lib/phpunit/phpunit/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:31 +0000] "GET /lib/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:31 +0000] "GET /lib/phpunit/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:31 +0000] "GET /lib/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:31 +0000] "GET /laravel/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:31 +0000] "GET /www/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:32 +0000] "GET /ws/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:32 +0000] "GET /yii/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:32 +0000] "GET /zend/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:32 +0000] "GET /ws/ec/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:32 +0000] "GET /V2/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:32 +0000] "GET /tests/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:33 +0000] "GET /test/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:33 +0000] "GET /testing/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:33 +0000] "GET /api/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:33 +0000] "GET /demo/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:33 +0000] "GET /cms/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:34 +0000] "GET /crm/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:34 +0000] "GET /admin/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:34 +0000] "GET /backup/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:34 +0000] "GET /blog/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:35 +0000] "GET /workspace/drupal/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:35 +0000] "GET /panel/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:35 +0000] "GET /public/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:35 +0000] "GET /apps/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:35 +0000] "GET /app/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:36 +0000] "GET /index.php?s=/index/\x5Cthink\x5Capp/invokefunction&function=call_user_func_array&vars[0]=md5&vars[1][]=Hello HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:36 +0000] "GET /public/index.php?s=/index/\x5Cthink\x5Capp/invokefunction&function=call_user_func_array&vars[0]=md5&vars[1][]=Hello HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:36 +0000] "GET /index.php?lang=../../../../../../../../usr/local/lib/php/pearcmd&+config-create+/&/+/tmp/index1.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:36 +0000] "GET /index.php?lang=../../../../../../../../tmp/index1 HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:37 +0000] "GET /containers/json HTTP/1.1" 404 162 "-" "libredtail-http" +101.32.218.31 - - [02/Feb/2026:00:42:16 +0000] "HEAD /Core/Skin/Login.aspx HTTP/1.1" 404 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36" +198.235.24.11 - - [02/Feb/2026:01:28:38 +0000] "GET / HTTP/1.0" 200 615 "-" "Hello from Palo Alto Networks, find out more about our scans in https://docs-cortex.paloaltonetworks.com/r/1/Cortex-Xpanse/Scanning-activity" +167.94.146.57 - - [02/Feb/2026:02:04:30 +0000] "GET / HTTP/1.1" 200 409 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" +167.94.146.57 - - [02/Feb/2026:02:04:30 +0000] "PRI * HTTP/2.0" 400 166 "-" "-" +167.94.146.57 - - [02/Feb/2026:02:04:30 +0000] "GET /favicon.ico HTTP/1.1" 404 134 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" +167.94.146.57 - - [02/Feb/2026:02:04:34 +0000] "GET /sitemap.xml HTTP/1.1" 404 134 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" +167.94.146.57 - - [02/Feb/2026:02:04:34 +0000] "\x16\x03\x01\x00\xEE\x01\x00\x00\xEA\x03\x03\x93\x9B\x8DLV\xF6x\x22\x89\x90\x9BZ\xE8*\x1F\xE7\xD5\xBC\xFA\xA7\xB3&\x16\xC6\xC6\x9A\xA5'\xA3y7\x09 \xB5l\xAB\xCF\x04\xBB~\xD8\xCEg$8\xB6}.\xDB\xC4\x13vO\xEB\xE9\x1C\x97\xD4b\xE0\x92\xE69>f\x00&\xCC\xA8\xCC\xA9\xC0/\xC00\xC0+\xC0,\xC0\x13\xC0\x09\xC0\x14\xC0" 400 166 "-" "-" +167.94.146.57 - - [02/Feb/2026:02:04:36 +0000] "\x16\x03\x01\x00\xEE\x01\x00\x00\xEA\x03\x03\x8A\xCE\xE3_\xE3*\xF6[\xF4z@" 400 166 "-" "-" +3.13.82.26 - - [02/Feb/2026:02:07:47 +0000] "GET / HTTP/1.1" 200 409 "-" "Go-http-client/1.1" +4.222.217.206 - - [02/Feb/2026:03:11:25 +0000] "GET / HTTP/1.1" 200 409 "-" "Go-http-client/1.1" +101.32.218.31 - - [02/Feb/2026:03:58:45 +0000] "HEAD /Core/Skin/Login.aspx HTTP/1.1" 404 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36" +102.22.20.125 - - [02/Feb/2026:04:05:34 +0000] "GET /admin/config.php HTTP/1.0" 404 162 "-" "xfa1,nvdorz,nvd0rz" +93.174.93.12 - - [02/Feb/2026:05:30:03 +0000] "\x16\x03\x02\x01o\x01\x00\x01k\x03\x02RH\xC5\x1A#\xF7:N\xDF\xE2\xB4\x82/\xFF\x09T\x9F\xA7\xC4y\xB0h\xC6\x13\x8C\xA4\x1C=\x22\xE1\x1A\x98 \x84\xB4,\x85\xAFn\xE3Y\xBBbhl\xFF(=':\xA9\x82\xD9o\xC8\xA2\xD7\x93\x98\xB4\xEF\x80\xE5\xB9\x90\x00(\xC0" 400 166 "-" "-" +101.32.218.31 - - [02/Feb/2026:05:36:47 +0000] "HEAD /Core/Skin/Login.aspx HTTP/1.1" 404 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36" +93.174.93.12 - - [02/Feb/2026:05:52:50 +0000] "GET / HTTP/1.0" 200 615 "-" "Mozilla/5.0 (Linux; Android 9; MHA-AL00 Build/HUAWEIMHA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.99 Mobile Safari/537.36 MMWEBID/9772 MicroMessenger/7.0.6.1460(0x27000634) Process/tools NetType/WIFI Language/zh_CN" +101.32.218.31 - - [02/Feb/2026:07:14:55 +0000] "HEAD /Core/Skin/Login.aspx HTTP/1.1" 404 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36" +83.218.189.32 - - [02/Feb/2026:07:17:28 +0000] "GET / HTTP/1.1" 200 615 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" +91.92.241.119 - - [02/Feb/2026:07:40:23 +0000] "\x16\x03\x01\x00\xEE\x01\x00\x00\xEA\x03\x03\xCD\x80Z" 400 166 "-" "-" +3.137.73.221 - - [02/Feb/2026:08:13:44 +0000] "\x16\x03\x01\x00{\x01\x00\x00w\x03\x03u*\xAF\xF5\xD2\x172\xE0F\x8B" 400 166 "-" "-" +3.137.73.221 - - [02/Feb/2026:08:14:10 +0000] "SSH-2.0-Go" 400 166 "-" "-" +3.137.73.221 - - [02/Feb/2026:08:14:42 +0000] "\x16\x03\x01\x00{\x01\x00\x00w\x03\x03\x18\x00\x14\x88\x1D\xA8zo\x2235X:\x1F\xDD!\xA4\xE0r\xBB\x10\xE8\x0F\xA0\xCA\xC1\xA8g\xEA\xD2\x11\xB9\x00\x00\x1A\xC0/\xC0+\xC0\x11\xC0\x07\xC0\x13\xC0\x09\xC0\x14\xC0" 400 166 "-" "-" +3.137.73.221 - - [02/Feb/2026:08:15:08 +0000] "GET / HTTP/1.1" 200 409 "-" "cypex.ai/scanning Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/126.0.0.0 Safari/537.36" +3.137.73.221 - - [02/Feb/2026:08:16:08 +0000] "GET / HTTP/1.1" 200 409 "-" "cypex.ai/scanning Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/126.0.0.0 Safari/537.36" +205.210.31.5 - - [02/Feb/2026:08:18:09 +0000] "GET / HTTP/1.1" 200 409 "-" "Hello from Palo Alto Networks, find out more about our scans in https://docs-cortex.paloaltonetworks.com/r/1/Cortex-Xpanse/Scanning-activity" +3.137.73.221 - - [02/Feb/2026:08:19:37 +0000] "" 400 0 "-" "-" +40.76.116.33 - - [02/Feb/2026:08:43:23 +0000] "MGLNDD_43.204.108.136_80" 400 166 "-" "-" +101.32.218.31 - - [02/Feb/2026:08:52:37 +0000] "HEAD /Core/Skin/Login.aspx HTTP/1.1" 404 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36" +118.139.165.202 - - [02/Feb/2026:09:05:12 +0000] "GET / HTTP/1.1" 200 409 "-" "Go-http-client/1.1" +204.76.203.18 - - [02/Feb/2026:09:22:03 +0000] "GET /bin/ HTTP/1.1" 404 162 "-" "-" +71.6.232.30 - - [02/Feb/2026:09:46:17 +0000] "GET / HTTP/1.1" 200 409 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36" +35.222.110.224 - - [02/Feb/2026:09:54:30 +0000] "\x16\x03\x01\x00M\x01\x00\x00I\x03\x03\xC8p\x08\x9A\xBD\x9C\xB6\x9B\x13KL\x16M?o\xF70v\xB8\xC17\x88G\x0E \xB0\x10;!!\xC2@ \x0Ft\xDBi\x8E\x16q\xD3\xE9!\xF9\x8B\xE6\x14+\xB0}\x962\xD0%\x9A\x1F\xFAX\xF9xp" 400 166 "-" "-" +35.222.110.224 - - [02/Feb/2026:09:54:32 +0000] "OPTIONS / HTTP/1.0" 405 166 "-" "-" +43.136.167.214 - - [02/Feb/2026:10:11:35 +0000] "GET / HTTP/1.1" 200 409 "-" "Go-http-client/1.1" +44.201.45.58 - - [02/Feb/2026:10:23:13 +0000] "\x16\x03\x01\x00\xFE\x01\x00\x00\xFA\x03\x03\x9B\xE6^\xC7\x9B`\xC8\xAC\x0B\x02\xD4\x0Ch\xA8\x9D\x18Z\x1D5\x92A\x97\xCD\xCA&u\xEEk\x1C9g\x91 i\xB3\xCD,\x9C\x22|\xD9iNW\xAC\xF1i\xD0\xDD\xB7\xA3F\xFD\x13\x9B\xF4b\xF8\x9B\xAB\xC0`K\xEA\xF9\x002\xC0+\xC0/\xC0,\xC00\xCC\xA9\xCC\xA8\xC0\x09\xC0\x13\xC0" 400 166 "-" "-" +44.201.45.58 - - [02/Feb/2026:10:23:13 +0000] "\x16\x03\x01\x00\xE0\x01\x00\x00\xDC\x03\x03\x8F1\xB6!\xC2\xC6\xFE\x80\x1D\x0B\xC6\xEA\xE7\xC7G\x92\xA4\x9B\xE7J1\xA3\x0F\xFA\x13\xD1\x9BCS)V*\x00\x00h\xC0,\x00\x03\x00\x05\xC0\x09\x003\x00\x9D\x00f\x00j\xC0+\xC0\x07\x00\x04\x00" 400 166 "-" "-" +101.32.218.31 - - [02/Feb/2026:10:30:48 +0000] "HEAD /Core/Skin/Login.aspx HTTP/1.1" 404 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36" +180.149.126.5 - - [02/Feb/2026:11:19:09 +0000] "GET /stalker_portal/server/tools/auth_simple.php HTTP/1.1" 404 196 "-" "Mozilla/5.0 (Windows NT 5.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36" +101.36.123.102 - - [02/Feb/2026:11:20:07 +0000] "POST /cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/bin/sh HTTP/1.1" 400 166 "-" "-" +185.242.226.102 - - [02/Feb/2026:11:26:27 +0000] "GET / HTTP/1.1" 200 409 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36" +204.76.203.18 - - [02/Feb/2026:11:54:35 +0000] "GET /backup/ HTTP/1.1" 404 162 "-" "-" +101.32.218.31 - - [02/Feb/2026:12:08:37 +0000] "HEAD /Core/Skin/Login.aspx HTTP/1.1" 404 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36" +87.121.84.51 - - [02/Feb/2026:12:21:30 +0000] "GET / HTTP/1.0" 200 615 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0" +87.121.84.51 - - [02/Feb/2026:12:21:33 +0000] "POST /cgi-bin/login HTTP/1.0" 404 162 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0" +152.32.134.89 - - [02/Feb/2026:12:39:02 +0000] "GET / HTTP/1.1" 200 615 "-" "curl/7.29.0" +152.32.134.89 - - [02/Feb/2026:12:39:03 +0000] "\x16\x03\x01\x00\xF2\x01\x00\x00\xEE\x03\x030a\x85\xFFwBk2\xEC)\xA8W|\x8F\xC6^\x90\x066\xE0\xF4\xF9fh\xEA\xCD\xCE\xB5-\x1E\xCF^ \xFD\xDE\xF4\xCA\xA3\xE5\xFB+X\xBAWH\xC182" 400 166 "-" "-" +152.32.134.89 - - [02/Feb/2026:12:39:03 +0000] "t3 12.1.2" 400 166 "-" "-" +118.193.43.158 - - [02/Feb/2026:12:40:14 +0000] "GET / HTTP/1.1" 200 409 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/565.36 (KHTML, like Gecko) Chrome/94.0.1387 Safari/537.36" +118.193.43.158 - - [02/Feb/2026:12:40:15 +0000] "GET /favicon.ico HTTP/1.1" 404 134 "-" "Go-http-client/1.1" +118.193.43.158 - - [02/Feb/2026:12:40:15 +0000] "GET /robots.txt HTTP/1.1" 404 134 "-" "Go-http-client/1.1" +118.193.43.158 - - [02/Feb/2026:12:40:15 +0000] "GET /sitemap.xml HTTP/1.1" 404 134 "-" "Go-http-client/1.1" +13.89.125.227 - - [02/Feb/2026:13:44:43 +0000] "GET / HTTP/1.1" 200 409 "-" "Mozilla/5.0 zgrab/0.x" +101.32.218.31 - - [02/Feb/2026:13:46:42 +0000] "HEAD /Core/Skin/Login.aspx HTTP/1.1" 404 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36" +165.154.247.236 - - [02/Feb/2026:14:11:12 +0000] "GET / HTTP/1.0" 200 615 "-" "-" +165.154.247.236 - - [02/Feb/2026:14:16:40 +0000] "GET / HTTP/1.1" 200 409 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11) AppleWebKit/538.41 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36" +165.154.247.236 - - [02/Feb/2026:14:16:40 +0000] "GET /favicon.ico HTTP/1.1" 404 196 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11) AppleWebKit/538.41 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36" +35.195.64.27 - - [02/Feb/2026:14:30:57 +0000] "GET / HTTP/1.1" 200 409 "-" "python-requests/2.32.5" +54.88.251.164 - - [02/Feb/2026:15:13:09 +0000] "GET / HTTP/1.1" 200 409 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36" +212.73.148.22 - - [02/Feb/2026:15:14:30 +0000] "" 400 0 "-" "-" +101.32.218.31 - - [02/Feb/2026:15:24:48 +0000] "HEAD /Core/Skin/Login.aspx HTTP/1.1" 404 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36" +20.81.47.186 - - [02/Feb/2026:15:32:27 +0000] "GET /developmentserver/metadatauploader HTTP/1.1" 404 134 "-" "Mozilla/5.0 zgrab/0.x" +8.219.209.185 - - [02/Feb/2026:16:15:52 +0000] "GET http://passport.baidu.com/ HTTP/1.1" 200 409 "-" "-" +8.219.209.185 - - [02/Feb/2026:16:19:00 +0000] "\x04\x01\x00Pg)\xA7\xEA\x00" 400 166 "-" "-" +8.219.209.185 - - [02/Feb/2026:16:19:13 +0000] "\x05\x01\x00" 400 166 "-" "-" +185.247.137.13 - - [02/Feb/2026:16:44:41 +0000] "GET / HTTP/1.1" 200 409 "-" "Mozilla/5.0 (compatible; InternetMeasurement/1.0; +https://internet-measurement.com/)" +85.159.0.251 - - [02/Feb/2026:17:13:37 +0000] "GET / HTTP/1.1" 200 615 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/601.7.7 (KHTML, like Gecko) Version/9.1.2 Safari/601.7.7" diff --git a/2026/day-08/nginx_all_logs.txt b/2026/day-08/nginx_all_logs.txt new file mode 100644 index 000000000..1ae0d6297 --- /dev/null +++ b/2026/day-08/nginx_all_logs.txt @@ -0,0 +1,111 @@ +109.172.55.25 - - [02/Feb/2026:00:32:27 +0000] "POST /cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/bin/sh HTTP/1.1" 400 166 "-" "-" +109.172.55.25 - - [02/Feb/2026:00:32:27 +0000] "POST /cgi-bin/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/bin/sh HTTP/1.1" 400 166 "-" "-" +109.172.55.25 - - [02/Feb/2026:00:32:27 +0000] "POST /hello.world?%ADd+allow_url_include%3d1+%ADd+auto_prepend_file%3dphp://input HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:28 +0000] "POST /?%ADd+allow_url_include%3d1+%ADd+auto_prepend_file%3dphp://input HTTP/1.1" 405 166 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:28 +0000] "GET /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:28 +0000] "GET /vendor/phpunit/phpunit/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:29 +0000] "GET /vendor/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:29 +0000] "GET /vendor/phpunit/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:29 +0000] "GET /vendor/phpunit/phpunit/LICENSE/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:29 +0000] "GET /vendor/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:29 +0000] "GET /phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:30 +0000] "GET /phpunit/phpunit/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:30 +0000] "GET /phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:30 +0000] "GET /phpunit/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:30 +0000] "GET /lib/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:30 +0000] "GET /lib/phpunit/phpunit/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:31 +0000] "GET /lib/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:31 +0000] "GET /lib/phpunit/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:31 +0000] "GET /lib/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:31 +0000] "GET /laravel/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:31 +0000] "GET /www/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:32 +0000] "GET /ws/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:32 +0000] "GET /yii/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:32 +0000] "GET /zend/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:32 +0000] "GET /ws/ec/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:32 +0000] "GET /V2/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:32 +0000] "GET /tests/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:33 +0000] "GET /test/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:33 +0000] "GET /testing/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:33 +0000] "GET /api/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:33 +0000] "GET /demo/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:33 +0000] "GET /cms/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:34 +0000] "GET /crm/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:34 +0000] "GET /admin/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:34 +0000] "GET /backup/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:34 +0000] "GET /blog/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:35 +0000] "GET /workspace/drupal/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:35 +0000] "GET /panel/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:35 +0000] "GET /public/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:35 +0000] "GET /apps/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:35 +0000] "GET /app/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:36 +0000] "GET /index.php?s=/index/\x5Cthink\x5Capp/invokefunction&function=call_user_func_array&vars[0]=md5&vars[1][]=Hello HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:36 +0000] "GET /public/index.php?s=/index/\x5Cthink\x5Capp/invokefunction&function=call_user_func_array&vars[0]=md5&vars[1][]=Hello HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:36 +0000] "GET /index.php?lang=../../../../../../../../usr/local/lib/php/pearcmd&+config-create+/&/+/tmp/index1.php HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:36 +0000] "GET /index.php?lang=../../../../../../../../tmp/index1 HTTP/1.1" 404 162 "-" "libredtail-http" +109.172.55.25 - - [02/Feb/2026:00:32:37 +0000] "GET /containers/json HTTP/1.1" 404 162 "-" "libredtail-http" +101.32.218.31 - - [02/Feb/2026:00:42:16 +0000] "HEAD /Core/Skin/Login.aspx HTTP/1.1" 404 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36" +198.235.24.11 - - [02/Feb/2026:01:28:38 +0000] "GET / HTTP/1.0" 200 615 "-" "Hello from Palo Alto Networks, find out more about our scans in https://docs-cortex.paloaltonetworks.com/r/1/Cortex-Xpanse/Scanning-activity" +167.94.146.57 - - [02/Feb/2026:02:04:30 +0000] "GET / HTTP/1.1" 200 409 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" +167.94.146.57 - - [02/Feb/2026:02:04:30 +0000] "PRI * HTTP/2.0" 400 166 "-" "-" +167.94.146.57 - - [02/Feb/2026:02:04:30 +0000] "GET /favicon.ico HTTP/1.1" 404 134 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" +167.94.146.57 - - [02/Feb/2026:02:04:34 +0000] "GET /sitemap.xml HTTP/1.1" 404 134 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" +167.94.146.57 - - [02/Feb/2026:02:04:34 +0000] "\x16\x03\x01\x00\xEE\x01\x00\x00\xEA\x03\x03\x93\x9B\x8DLV\xF6x\x22\x89\x90\x9BZ\xE8*\x1F\xE7\xD5\xBC\xFA\xA7\xB3&\x16\xC6\xC6\x9A\xA5'\xA3y7\x09 \xB5l\xAB\xCF\x04\xBB~\xD8\xCEg$8\xB6}.\xDB\xC4\x13vO\xEB\xE9\x1C\x97\xD4b\xE0\x92\xE69>f\x00&\xCC\xA8\xCC\xA9\xC0/\xC00\xC0+\xC0,\xC0\x13\xC0\x09\xC0\x14\xC0" 400 166 "-" "-" +167.94.146.57 - - [02/Feb/2026:02:04:36 +0000] "\x16\x03\x01\x00\xEE\x01\x00\x00\xEA\x03\x03\x8A\xCE\xE3_\xE3*\xF6[\xF4z@" 400 166 "-" "-" +3.13.82.26 - - [02/Feb/2026:02:07:47 +0000] "GET / HTTP/1.1" 200 409 "-" "Go-http-client/1.1" +4.222.217.206 - - [02/Feb/2026:03:11:25 +0000] "GET / HTTP/1.1" 200 409 "-" "Go-http-client/1.1" +101.32.218.31 - - [02/Feb/2026:03:58:45 +0000] "HEAD /Core/Skin/Login.aspx HTTP/1.1" 404 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36" +102.22.20.125 - - [02/Feb/2026:04:05:34 +0000] "GET /admin/config.php HTTP/1.0" 404 162 "-" "xfa1,nvdorz,nvd0rz" +93.174.93.12 - - [02/Feb/2026:05:30:03 +0000] "\x16\x03\x02\x01o\x01\x00\x01k\x03\x02RH\xC5\x1A#\xF7:N\xDF\xE2\xB4\x82/\xFF\x09T\x9F\xA7\xC4y\xB0h\xC6\x13\x8C\xA4\x1C=\x22\xE1\x1A\x98 \x84\xB4,\x85\xAFn\xE3Y\xBBbhl\xFF(=':\xA9\x82\xD9o\xC8\xA2\xD7\x93\x98\xB4\xEF\x80\xE5\xB9\x90\x00(\xC0" 400 166 "-" "-" +101.32.218.31 - - [02/Feb/2026:05:36:47 +0000] "HEAD /Core/Skin/Login.aspx HTTP/1.1" 404 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36" +93.174.93.12 - - [02/Feb/2026:05:52:50 +0000] "GET / HTTP/1.0" 200 615 "-" "Mozilla/5.0 (Linux; Android 9; MHA-AL00 Build/HUAWEIMHA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.99 Mobile Safari/537.36 MMWEBID/9772 MicroMessenger/7.0.6.1460(0x27000634) Process/tools NetType/WIFI Language/zh_CN" +101.32.218.31 - - [02/Feb/2026:07:14:55 +0000] "HEAD /Core/Skin/Login.aspx HTTP/1.1" 404 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36" +83.218.189.32 - - [02/Feb/2026:07:17:28 +0000] "GET / HTTP/1.1" 200 615 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" +91.92.241.119 - - [02/Feb/2026:07:40:23 +0000] "\x16\x03\x01\x00\xEE\x01\x00\x00\xEA\x03\x03\xCD\x80Z" 400 166 "-" "-" +3.137.73.221 - - [02/Feb/2026:08:13:44 +0000] "\x16\x03\x01\x00{\x01\x00\x00w\x03\x03u*\xAF\xF5\xD2\x172\xE0F\x8B" 400 166 "-" "-" +3.137.73.221 - - [02/Feb/2026:08:14:10 +0000] "SSH-2.0-Go" 400 166 "-" "-" +3.137.73.221 - - [02/Feb/2026:08:14:42 +0000] "\x16\x03\x01\x00{\x01\x00\x00w\x03\x03\x18\x00\x14\x88\x1D\xA8zo\x2235X:\x1F\xDD!\xA4\xE0r\xBB\x10\xE8\x0F\xA0\xCA\xC1\xA8g\xEA\xD2\x11\xB9\x00\x00\x1A\xC0/\xC0+\xC0\x11\xC0\x07\xC0\x13\xC0\x09\xC0\x14\xC0" 400 166 "-" "-" +3.137.73.221 - - [02/Feb/2026:08:15:08 +0000] "GET / HTTP/1.1" 200 409 "-" "cypex.ai/scanning Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/126.0.0.0 Safari/537.36" +3.137.73.221 - - [02/Feb/2026:08:16:08 +0000] "GET / HTTP/1.1" 200 409 "-" "cypex.ai/scanning Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/126.0.0.0 Safari/537.36" +205.210.31.5 - - [02/Feb/2026:08:18:09 +0000] "GET / HTTP/1.1" 200 409 "-" "Hello from Palo Alto Networks, find out more about our scans in https://docs-cortex.paloaltonetworks.com/r/1/Cortex-Xpanse/Scanning-activity" +3.137.73.221 - - [02/Feb/2026:08:19:37 +0000] "" 400 0 "-" "-" +40.76.116.33 - - [02/Feb/2026:08:43:23 +0000] "MGLNDD_43.204.108.136_80" 400 166 "-" "-" +101.32.218.31 - - [02/Feb/2026:08:52:37 +0000] "HEAD /Core/Skin/Login.aspx HTTP/1.1" 404 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36" +118.139.165.202 - - [02/Feb/2026:09:05:12 +0000] "GET / HTTP/1.1" 200 409 "-" "Go-http-client/1.1" +204.76.203.18 - - [02/Feb/2026:09:22:03 +0000] "GET /bin/ HTTP/1.1" 404 162 "-" "-" +71.6.232.30 - - [02/Feb/2026:09:46:17 +0000] "GET / HTTP/1.1" 200 409 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36" +35.222.110.224 - - [02/Feb/2026:09:54:30 +0000] "\x16\x03\x01\x00M\x01\x00\x00I\x03\x03\xC8p\x08\x9A\xBD\x9C\xB6\x9B\x13KL\x16M?o\xF70v\xB8\xC17\x88G\x0E \xB0\x10;!!\xC2@ \x0Ft\xDBi\x8E\x16q\xD3\xE9!\xF9\x8B\xE6\x14+\xB0}\x962\xD0%\x9A\x1F\xFAX\xF9xp" 400 166 "-" "-" +35.222.110.224 - - [02/Feb/2026:09:54:32 +0000] "OPTIONS / HTTP/1.0" 405 166 "-" "-" +43.136.167.214 - - [02/Feb/2026:10:11:35 +0000] "GET / HTTP/1.1" 200 409 "-" "Go-http-client/1.1" +44.201.45.58 - - [02/Feb/2026:10:23:13 +0000] "\x16\x03\x01\x00\xFE\x01\x00\x00\xFA\x03\x03\x9B\xE6^\xC7\x9B`\xC8\xAC\x0B\x02\xD4\x0Ch\xA8\x9D\x18Z\x1D5\x92A\x97\xCD\xCA&u\xEEk\x1C9g\x91 i\xB3\xCD,\x9C\x22|\xD9iNW\xAC\xF1i\xD0\xDD\xB7\xA3F\xFD\x13\x9B\xF4b\xF8\x9B\xAB\xC0`K\xEA\xF9\x002\xC0+\xC0/\xC0,\xC00\xCC\xA9\xCC\xA8\xC0\x09\xC0\x13\xC0" 400 166 "-" "-" +44.201.45.58 - - [02/Feb/2026:10:23:13 +0000] "\x16\x03\x01\x00\xE0\x01\x00\x00\xDC\x03\x03\x8F1\xB6!\xC2\xC6\xFE\x80\x1D\x0B\xC6\xEA\xE7\xC7G\x92\xA4\x9B\xE7J1\xA3\x0F\xFA\x13\xD1\x9BCS)V*\x00\x00h\xC0,\x00\x03\x00\x05\xC0\x09\x003\x00\x9D\x00f\x00j\xC0+\xC0\x07\x00\x04\x00" 400 166 "-" "-" +101.32.218.31 - - [02/Feb/2026:10:30:48 +0000] "HEAD /Core/Skin/Login.aspx HTTP/1.1" 404 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36" +180.149.126.5 - - [02/Feb/2026:11:19:09 +0000] "GET /stalker_portal/server/tools/auth_simple.php HTTP/1.1" 404 196 "-" "Mozilla/5.0 (Windows NT 5.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36" +101.36.123.102 - - [02/Feb/2026:11:20:07 +0000] "POST /cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/bin/sh HTTP/1.1" 400 166 "-" "-" +185.242.226.102 - - [02/Feb/2026:11:26:27 +0000] "GET / HTTP/1.1" 200 409 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36" +204.76.203.18 - - [02/Feb/2026:11:54:35 +0000] "GET /backup/ HTTP/1.1" 404 162 "-" "-" +101.32.218.31 - - [02/Feb/2026:12:08:37 +0000] "HEAD /Core/Skin/Login.aspx HTTP/1.1" 404 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36" +87.121.84.51 - - [02/Feb/2026:12:21:30 +0000] "GET / HTTP/1.0" 200 615 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0" +87.121.84.51 - - [02/Feb/2026:12:21:33 +0000] "POST /cgi-bin/login HTTP/1.0" 404 162 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0" +152.32.134.89 - - [02/Feb/2026:12:39:02 +0000] "GET / HTTP/1.1" 200 615 "-" "curl/7.29.0" +152.32.134.89 - - [02/Feb/2026:12:39:03 +0000] "\x16\x03\x01\x00\xF2\x01\x00\x00\xEE\x03\x030a\x85\xFFwBk2\xEC)\xA8W|\x8F\xC6^\x90\x066\xE0\xF4\xF9fh\xEA\xCD\xCE\xB5-\x1E\xCF^ \xFD\xDE\xF4\xCA\xA3\xE5\xFB+X\xBAWH\xC182" 400 166 "-" "-" +152.32.134.89 - - [02/Feb/2026:12:39:03 +0000] "t3 12.1.2" 400 166 "-" "-" +118.193.43.158 - - [02/Feb/2026:12:40:14 +0000] "GET / HTTP/1.1" 200 409 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/565.36 (KHTML, like Gecko) Chrome/94.0.1387 Safari/537.36" +118.193.43.158 - - [02/Feb/2026:12:40:15 +0000] "GET /favicon.ico HTTP/1.1" 404 134 "-" "Go-http-client/1.1" +118.193.43.158 - - [02/Feb/2026:12:40:15 +0000] "GET /robots.txt HTTP/1.1" 404 134 "-" "Go-http-client/1.1" +118.193.43.158 - - [02/Feb/2026:12:40:15 +0000] "GET /sitemap.xml HTTP/1.1" 404 134 "-" "Go-http-client/1.1" +13.89.125.227 - - [02/Feb/2026:13:44:43 +0000] "GET / HTTP/1.1" 200 409 "-" "Mozilla/5.0 zgrab/0.x" +101.32.218.31 - - [02/Feb/2026:13:46:42 +0000] "HEAD /Core/Skin/Login.aspx HTTP/1.1" 404 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36" +165.154.247.236 - - [02/Feb/2026:14:11:12 +0000] "GET / HTTP/1.0" 200 615 "-" "-" +165.154.247.236 - - [02/Feb/2026:14:16:40 +0000] "GET / HTTP/1.1" 200 409 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11) AppleWebKit/538.41 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36" +165.154.247.236 - - [02/Feb/2026:14:16:40 +0000] "GET /favicon.ico HTTP/1.1" 404 196 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11) AppleWebKit/538.41 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36" +35.195.64.27 - - [02/Feb/2026:14:30:57 +0000] "GET / HTTP/1.1" 200 409 "-" "python-requests/2.32.5" +54.88.251.164 - - [02/Feb/2026:15:13:09 +0000] "GET / HTTP/1.1" 200 409 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36" +212.73.148.22 - - [02/Feb/2026:15:14:30 +0000] "" 400 0 "-" "-" +101.32.218.31 - - [02/Feb/2026:15:24:48 +0000] "HEAD /Core/Skin/Login.aspx HTTP/1.1" 404 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36" +20.81.47.186 - - [02/Feb/2026:15:32:27 +0000] "GET /developmentserver/metadatauploader HTTP/1.1" 404 134 "-" "Mozilla/5.0 zgrab/0.x" +8.219.209.185 - - [02/Feb/2026:16:15:52 +0000] "GET http://passport.baidu.com/ HTTP/1.1" 200 409 "-" "-" +8.219.209.185 - - [02/Feb/2026:16:19:00 +0000] "\x04\x01\x00Pg)\xA7\xEA\x00" 400 166 "-" "-" +8.219.209.185 - - [02/Feb/2026:16:19:13 +0000] "\x05\x01\x00" 400 166 "-" "-" +185.247.137.13 - - [02/Feb/2026:16:44:41 +0000] "GET / HTTP/1.1" 200 409 "-" "Mozilla/5.0 (compatible; InternetMeasurement/1.0; +https://internet-measurement.com/)" +85.159.0.251 - - [02/Feb/2026:17:13:37 +0000] "GET / HTTP/1.1" 200 615 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/601.7.7 (KHTML, like Gecko) Version/9.1.2 Safari/601.7.7" diff --git a/2026/day-09/Day 09 Challenge.md b/2026/day-09/Day 09 Challenge.md new file mode 100644 index 000000000..85ea4b8bd --- /dev/null +++ b/2026/day-09/Day 09 Challenge.md @@ -0,0 +1,71 @@ +\# Day 09 Challenge + +\#\# Users & Groups Created +\- Users: tokyo, berlin, professor, nairobi +\- Groups: developers, admins, project-team + +\#\# Group Assignments +Tokyo and berlin are in developers group +berlin and professor are in admins group +nairobi and tokyo are in project-team group + +\#\# Directories Created +dev-project with 775 permission and ownerships as owner root and group developers +team-workspace with 775 permission and ownerships as owner root and group project-team + +\#\# Commands Used +sudo useradd \-m tokyo +sudo useradd \-m berlin +sudo useradd \-m professor +tail \-f /etc/passwd +sudo groupadd developers +sudo groupadd admins +sudo usermod \-aG developers tokyo +sudo usermod \-aG developers berlin +sudo usermod \-aG admins berlin +sudo usermod \-aG admins professor +tail \-f /etc/group +sudo mkdir \-p /opt/dev-project +cd ../opt/ +ls \-l +sudo chown :developers dev-project/ +ls \-l +sudo chmod 775 dev-project +ls \-l +sudo passwd tokyo +sudo passwd berlin +sudo passwd professor +su berlin +ls +touch new-file.txt +ls \-l +su tokyo +touch tokyo-new-file.txt +ls \-l +sudo useradd \-m nairobi +tail \-n 3 /etc/passwd +cd /home +ls +sudo groupadd project-team +tail \-n 3 /etc/group +sudo usermod \-aG project-team nairobi +sudo usermod \-aG project-team tokyo +tail \-n 3 /etc/group +sudo mkdir \-p /opt/team-workspace +cd /opt/ +ls +sudo chown :project-team team-workspace +sudo chmod 775 team-workspace/ +ls \-l +sudo passwd nairobi +su nairobi +cd team-workspace/ +touch nairobi-text-file.txt +ls \-l + +\#\# What I Learned +1\. Adding users +2\. Adding groups +3\. Assigning user to groups +4\. Assigning permission and ownership to directories and writing the files in the directories by a particular user + diff --git "a/2026/day-09/Day 09 \342\200\223 Linux User & Group Management Challenge.pdf" "b/2026/day-09/Day 09 \342\200\223 Linux User & Group Management Challenge.pdf" new file mode 100644 index 000000000..e6d48715f Binary files /dev/null and "b/2026/day-09/Day 09 \342\200\223 Linux User & Group Management Challenge.pdf" differ diff --git a/2026/day-10/Day 10 - File Permissions and File Operations.pdf b/2026/day-10/Day 10 - File Permissions and File Operations.pdf new file mode 100644 index 000000000..3afd1d102 Binary files /dev/null and b/2026/day-10/Day 10 - File Permissions and File Operations.pdf differ diff --git a/2026/day-10/day-10-file-permissions.md b/2026/day-10/day-10-file-permissions.md new file mode 100644 index 000000000..c53f9d501 --- /dev/null +++ b/2026/day-10/day-10-file-permissions.md @@ -0,0 +1,33 @@ +**\# Day 10 Challenge** + +\#\# Files Created +devops.txt +notes.txt +script.sh + +\#\# Permission Changes +Before permission changes the files had the permission as 664 for all files and for project folder it was 775 and after changing the permission, the new permission of the files were +1\. devops.txt \- 444 +2\. notes.txt \- 640\\ +3\. [script.sh](http://script.sh) \- 775 +4\. project folder \- 755 + +\#\# Commands Used +touch devops.txt +echo "This is a DevOps hands on practice notes Day 10 challenge" \> notes.txt +vi [script.sh](http://script.sh) +cat notes.txt +vi [script.sh](http://script.sh) +head \-n 5 /etc/passwd +tail \-n 5 /etc/passwd +chmod \+x [script.sh](http://script.sh) +./[script.sh](http://script.sh) +chmod 444 devops.txt +chmod 640 notes.txt +mkdir project +chmod 755 project +echo "Testing write permission" \> devops.txt +./notes.txt + +\#\# What I Learned +In this i learned managing permissions and understanding how permissions work diff --git a/2026/day-11/Day 11 - File Ownership Challenge (chown and chgrp).pdf b/2026/day-11/Day 11 - File Ownership Challenge (chown and chgrp).pdf new file mode 100644 index 000000000..c74673af2 Binary files /dev/null and b/2026/day-11/Day 11 - File Ownership Challenge (chown and chgrp).pdf differ diff --git "a/2026/day-12/Day 12 \342\200\223 Breather & Revision (Days 01\342\200\22311).md" "b/2026/day-12/Day 12 \342\200\223 Breather & Revision (Days 01\342\200\22311).md" new file mode 100644 index 000000000..403d22239 --- /dev/null +++ "b/2026/day-12/Day 12 \342\200\223 Breather & Revision (Days 01\342\200\22311).md" @@ -0,0 +1,47 @@ +**Day 12 – Breather & Revision (Days 01–11)** + +**Day 1:** +After revisiting Day 01, I feel my learning plan is still aligned with my goals. The step-by-step approach and hands-on practice from Days 1–11 have helped me build a strong foundation, so I don’t see a need to tweak my plan at this stage. + +**Day 4 \- 5:** +I checked the status of the nginx and docker services using systemctl status and reviewed their logs using journalctl. Both services were active, running, and enabled, and the logs did not show any errors. + +**Day 6 \- 11:** +I have practiced all the mentioned file operations and have used them in my earlier work experience as well. I am comfortable with commands like `chmod`, `chown`, and `ls -l`. However, my learning focus now is on understanding **when to assign full permissions versus limited permissions**, especially while setting up a new server. I usually know what permission to fix when an error occurs, but I want to be more deliberate and secure by default. + +**Cheat Sheet Refresh (Day 03):** +During revision, I refreshed my Day 03 Linux cheat sheet and identified the commands I would immediately use during an incident. These commands give quick visibility into service health, logs, and running processes, helping me diagnose issues faster. + +### **Top 5 Commands I’d Reach for First** + +1. **systemctl status \** + To quickly check whether a service is running, failed, or inactive and see recent errors. +2. **journalctl \-u \** + To analyze service logs and understand why a service failed or behaved unexpectedly. +3. **ps \-ef | grep \** + To confirm whether the process is actually running and identify the PID. + +4. **systemctl is-enabled \** + To verify whether the service is configured to start automatically after reboot. + +5. **ls \-l** + To quickly check file permissions and ownership when troubleshooting access or execution issues. + +--- + +### **Key Takeaway** + +These commands together help me **assess service health, trace failures using logs, and verify permissions**, which are the first steps I take during real production incidents. + +**User / Group Sanity Check (Days 09 & 11\)** +I created new users and groups, assigned users to groups, and then created files and directories with specific owners and groups. I tested access using a user who was not the owner but was part of the assigned group, and the user was able to access the files based on group permissions. I also verified that a user who was neither the owner nor part of the group, and had no permissions assigned under others, was unable to access the files. + +### **Which 3 commands save me the most time right now, and why?** + +1. **systemctl status \** + This gives an immediate view of whether a service is running, failed, or inactive, along with recent error messages. +2. **journalctl \-u \** + This helps me quickly analyze service logs to understand the root cause of failures or unexpected behavior. +3. **ls \-l** + This allows me to instantly verify file permissions and ownership when dealing with access or execution issues. + diff --git a/2026/day-13/day-13-lvm.md b/2026/day-13/day-13-lvm.md new file mode 100644 index 000000000..cd27d23a9 --- /dev/null +++ b/2026/day-13/day-13-lvm.md @@ -0,0 +1,203 @@ +**Day 13 \- Linux Volume Management** + +\#\# Objective +To understand and practice Linux Logical Volume Management (LVM) by creating physical volumes, volume groups, logical volumes, formatting them with filesystems, mounting them, and making the mounts persistent. + +\--- + +\#\# Environment +\- OS: Ubuntu Linux +\- Storage: Extra EBS volume (22 GB) +\- Privileges: Root user + +\--- + +\#\# Task 1: Check Current Storage + +\#\#\# Commands Used +\`\`\`bash +lsblk +pvs +vgs +lvs +df \-h + +### **Observation** + +Checked existing disks, partitions, and mounted filesystems before starting LVM configuration. + +--- + +## **Task 2: Create Physical Volumes (PV)** + +I had extra EBS storage available, so I skipped creating a fake disk. + +### **Physical Volumes Created** + +* 10 GB +* 6 GB +* 6 GB + +### **Commands Used** + +root@ip-172-31-13-238:/tmp\# pvcreate /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1 + Physical volume "/dev/nvme1n1" successfully created. + Physical volume "/dev/nvme2n1" successfully created. + Physical volume "/dev/nvme3n1" successfully created. +root@ip-172-31-13-238:/tmp\# pvs + PV VG Fmt Attr PSize PFree + /dev/nvme1n1 lvm2 \--- 6.00g 6.00g + /dev/nvme2n1 lvm2 \--- 6.00g 6.00g + /dev/nvme3n1 lvm2 \--- 10.00g 10.00g + +### **Observation** + +All three disks were successfully initialized as Physical Volumes. + +--- + +## **Task 3: Create Volume Group (VG)** + +### **Volume Group Name** + +* devops-vg + +### **Commands Used** + +root@ip-172-31-13-238:/tmp\# vgcreate devops-vg /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1 + Volume group "devops-vg" successfully created +root@ip-172-31-13-238:/tmp\# vgs + VG \#PV \#LV \#SN Attr VSize VFree + devops-vg 3 0 0 wz--n- \<21.99g \<21.99g + +### **Observation** + +The volume group was created by combining all three physical volumes. + +--- + +## + +## + +## **Task 4: Create Logical Volumes (LV)** + +### **Logical Volumes Created** + +* consdata1 – 10 GB +* consdata2 – 6 GB +* consdata3 – 6 GB + +### **Commands Used** + +root@ip-172-31-13-238:/home/ubuntu\# lvcreate \-L 10G \-n consdata1 devops-vg +WARNING: ext4 signature detected on /dev/devops-vg/consdata1 at offset 1080\. Wipe it? \[y/n\]: y + Wiping ext4 signature on /dev/devops-vg/consdata1. + Logical volume "consdata1" created. +root@ip-172-31-13-238:/home/ubuntu\# lvcreate \-L 6G \-n consdata2 devops-vg + Logical volume "consdata2" created. +root@ip-172-31-13-238:/home/ubuntu\# lvcreate \-L 5.9G \-n consdata3 devops-vg + Rounding up size to full physical extent 5.90 GiB + Logical volume "consdata3" created. +root@ip-172-31-13-238:/home/ubuntu\# lvs + LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert + consdata1 devops-vg \-wi-a----- 10.00g + consdata2 devops-vg \-wi-a----- 6.00g + consdata3 devops-vg \-wi-a----- 5.90g + +### **Observation** + +All logical volumes were created successfully inside the volume group. + +--- + +## **Task 5: Format and Mount Logical Volumes** + +### **Directories Created** + +/consdata1 +/consdata2 +/consdata3 + +### **Commands Used** + +root@ip-172-31-13-238:/home/ubuntu\# mkfs.ext4 /dev/devops-vg/consdata1 +mke2fs 1.47.0 (5-Feb-2023) +Creating filesystem with 2621440 4k blocks and 655360 inodes +Filesystem UUID: ed395ae0-2983-427c-95e8-b09272b1429a +Superblock backups stored on blocks: + 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 + +Allocating group tables: done +Writing inode tables: done +Creating journal (16384 blocks): done +Writing superblocks and filesystem accounting information: done + +root@ip-172-31-13-238:/home/ubuntu\# mkfs.ext4 /dev/devops-vg/consdata2 +mke2fs 1.47.0 (5-Feb-2023) +Creating filesystem with 1572864 4k blocks and 393216 inodes +Filesystem UUID: 96e8076e-2a7d-4210-a420-9601a82c3ce3 +Superblock backups stored on blocks: + 32768, 98304, 163840, 229376, 294912, 819200, 884736 + +Allocating group tables: done +Writing inode tables: done +Creating journal (16384 blocks): done +Writing superblocks and filesystem accounting information: done + +root@ip-172-31-13-238:/home/ubuntu\# mkfs.ext4 /dev/devops-vg/consdata3 +mke2fs 1.47.0 (5-Feb-2023) +Creating filesystem with 1547264 4k blocks and 387072 inodes +Filesystem UUID: 508c0a7b-4d34-4a92-8cea-37f41f1e7858 +Superblock backups stored on blocks: + 32768, 98304, 163840, 229376, 294912, 819200, 884736 + +Allocating group tables: done +Writing inode tables: done +Creating journal (16384 blocks): done +Writing superblocks and filesystem accounting information: done + +root@ip-172-31-13-238:/home/ubuntu\# mount /dev/devops-vg/consdata1 /consdata1 +root@ip-172-31-13-238:/home/ubuntu\# mount /dev/devops-vg/consdata2 /consdata2 +root@ip-172-31-13-238:/home/ubuntu\# mount /dev/devops-vg/consdata3 /consdata3 + +### + +### **Verification** + +df \-h +lsblk + +--- + +## **Task 6: Make Mounts Persistent** + +### **Commands Used** + +root@ip-172-31-13-238:/home/ubuntu\# blkid /dev/devops-vg/consdata1 /dev/devops-vg/consdata2 /dev/devops-vg/consdata3 +/dev/devops-vg/consdata1: UUID="ed395ae0-2983-427c-95e8-b09272b1429a" BLOCK\_SIZE="4096" TYPE="ext4" +/dev/devops-vg/consdata2: UUID="96e8076e-2a7d-4210-a420-9601a82c3ce3" BLOCK\_SIZE="4096" TYPE="ext4" + +/dev/devops-vg/consdata3: UUID="508c0a7b-4d34-4a92-8cea-37f41f1e7858" BLOCK\_SIZE="4096" TYPE="ext4" + +Added the UUID entries to /etc/fstab to ensure mounts persist after reboot. + +### **Verification** + +mount \-a + +--- + +## **What I Learned** + +* How LVM abstracts physical storage into flexible logical volumes +* How multiple disks can be combined into a single volume group +* How to create, format, and mount logical volumes +* Importance of UUID-based mounting for persistence and reliability + +--- + +## **Conclusion** + +This exercise helped me understand real-world LVM usage, similar to how storage is managed in production environments. Creating multiple logical volumes from a single volume group demonstrated the flexibility and power of LVM. + diff --git a/2026/day-14/day-14-networking.md b/2026/day-14/day-14-networking.md new file mode 100644 index 000000000..fd0683f92 --- /dev/null +++ b/2026/day-14/day-14-networking.md @@ -0,0 +1,122 @@ +# **Day 14 – Networking Fundamentals & Hands-on Checks** + +## **Objective** + +To understand core networking concepts and practice essential networking commands used during real-world troubleshooting. + +--- + +## **Quick Concepts** + +### **OSI vs TCP/IP** + +* The OSI model is used mainly for understanding and troubleshooting networking issues by dividing communication into logical layers. +* The TCP/IP model explains how data actually flows between machines in real-world networks. + +### **Protocol Placement** + +* IP is responsible for identifying the destination machine and sending data toward it. +* TCP and UDP control how data is delivered, where TCP focuses on reliability and UDP focuses on speed. +* HTTP and HTTPS define how a client and server communicate over the network. + +### **Real-world Example** + +* A curl request to a website works at the application layer using HTTP over TCP, which runs on top of IP. + +--- + +## **Hands-on Checklist** + +### **Identity** + +* Used to identify IP addresses assigned to the machine. +* Commands used: hostname \-I and ip addr show. +* Observed IPs include the loopback address 127.0.0.1, the server’s private IP 172.31.13.238, and the Docker bridge IP 172.17.0.1. +* All observed IP addresses are private. + +--- + +### **Reachability** + +* Used to check whether the target host is reachable. +* Command used: ping google.com. +* No packet loss was observed and latency was stable, confirming healthy network connectivity. + +--- + +### **Path** + +* Used to understand the network path taken to reach the destination. +* Command used: traceroute google.com. +* The destination was reached successfully. +* Some intermediate hops showed timeouts due to ICMP being blocked, which is common in real environments. + +--- + +### **Ports** + +* Used to check which services are listening on the system. +* Command used: ss \-tulpn. +* SSH service was listening on port 22\. +* Web service was listening on port 80\. +* Flask application was listening on port 5000\. + +--- + +### **Name Resolution** + +* Used to verify DNS resolution. +* Command used: nslookup google.com. +* DNS resolution succeeded and returned both IPv4 and IPv6 addresses. + +--- + +### **HTTP Check** + +* Used to verify HTTP-level connectivity. +* Command used: curl \-I [https://google.com](https://google.com/). +* An HTTP 301 status code was received, indicating a redirect. + +--- + +### **Connections Snapshot** + +* Used to view current network connections. +* Command used: netstat \-an. +* Both LISTEN and ESTABLISHED connection states were observed. + +--- + +## **Mini Task: Port Probe & Interpretation** + +### **Identifying the Listening Service** + +* Flask application was identified listening on port 5000\. +* Commands used: nc localhost 5000 and curl [http://localhost:5000](http://localhost:5000/). +* The port was reachable and the service responded with HTTP 200 OK. + +--- + +## **Reflection** + +* The fastest command to detect basic network issues is ping. +* If DNS fails, connectivity to the DNS service should be checked using ping or port checks. +* HTTP 500-series errors indicate server-side issues where the request reaches the server but fails during processing. + +--- + +## **Key Learnings** + +* Networking issues should be debugged layer by layer. +* Not all errors seen by tools are HTTP errors. +* HTTP 5xx errors indicate server-side failures. +* Commands like ping, traceroute, ss, nc, nslookup, and curl are essential for troubleshooting. + +--- + +## **Conclusion** + +This exercise reinforced practical networking fundamentals and improved understanding of how to differentiate between network-level, transport-level, and application-level issues in real production environments. + +--- + diff --git a/2026/day-15/day-15-networking-concepts.md b/2026/day-15/day-15-networking-concepts.md new file mode 100644 index 000000000..53acaca68 --- /dev/null +++ b/2026/day-15/day-15-networking-concepts.md @@ -0,0 +1,102 @@ +**Day 15 – Networking Concepts: DNS, IP, Subnets & Ports** + +## **Task Objective** + +The goal of Day 15 was to understand core networking concepts such as DNS resolution, IP addressing, subnetting using CIDR notation, and the role of ports in service communication. + +## **Task 1: DNS – How Names Become IPs** + +When a domain name like google.com is entered in a browser, the browser first asks a DNS server to resolve the domain name. The DNS server looks up the domain in its records and returns the corresponding IP address. Once the IP address is received, the browser uses that IP to communicate with the Google server. + +### **DNS Record Types** + +* **A record:** Maps a domain name to an IPv4 address +* **AAAA record:** Maps a domain name to an IPv6 address +* **CNAME record:** Maps one domain name to another domain name +* **MX record:** Specifies where emails for a domain should be delivered +* **NS record:** Specifies which DNS servers are responsible for a domain + +### **DNS Lookup Observation** + +Using the `dig google.com` command: + +* **A record IP:** 142.250.70.110 +* **TTL:** 109 seconds + +## **Task 2: IP Addressing** + +An IPv4 address is made up of four numbers separated by dots, where each number ranges from 0 to 255\. It is a 32-bit address used to identify machines on a network so they can communicate with each other. + +### **Public vs Private IP** + +* **Public IP:** Accessible over the internet + Example: 43.204.108.136 +* **Private IP:** Used for internal communication and not directly accessible over the internet + Example: 172.31.13.238 + +### **Private IP Ranges** + +* 10.0.0.0 to 10.255.255.255 +* 172.16.0.0 to 172.31.255.255 +* 192.168.0.0 to 192.168.255.255 + +### **IPs on My Machine** + +* **Private IP:** 172.31.13.238 +* **Interface:** ens5 +* **Public IP directly assigned to machine:** No (public IP is attached at the network/NAT level) + +## **Task 3: CIDR & Subnetting** + +### **CIDR Meaning** + +The `/24` in an IP address means the first 24 bits are reserved for the network. All devices sharing those first 24 bits belong to the same network, and this determines how many machines can exist in that network. + +### **Usable Hosts** + +* **/24:** 254 usable hosts +* **/16:** 65,534 usable hosts +* **/28:** 14 usable hosts + +### **Why We Subnet** + +Subnetting is done to divide a large network into smaller networks. This helps use IP addresses efficiently, isolate traffic and services, and improve security and performance. + +### **CIDR Table** + +| CIDR | Subnet Mask | Total IPs | Usable Hosts | +| ----- | ----- | ----- | ----- | +| /24 | 255.255.255.0 | 256 | 254 | +| /16 | 255.255.0.0 | 65536 | 65534 | +| /28 | 255.255.255.240 | 16 | 14 | + +## **Task 4: Ports – The Doors to Services** + +A port helps the system decide which incoming network traffic should be sent to which application or service. Ports are needed because multiple services run on the same machine, and the machine has only one IP address. + +### **Common Ports** + +* **22:** SSH (SFTP over SSH) +* **80:** HTTP +* **443:** HTTPS +* **53:** DNS +* **3306:** MySQL +* **6379:** Redis +* **27017:** MongoDB + +## **Task 5: Putting It Together** + +When running `curl http://myapp.com:8080`, DNS is used to resolve the domain name to an IP address. The system then connects to that IP on port 8080, and HTTP is used to request data from the application running on that port. + +If an application cannot reach a database at 10.0.1.50:3306, the first step is to check network reachability by pinging the IP. If the IP is reachable, the next step is to check whether port 3306 is accessible using tools like nc or telnet. + +**What I Learned** + +* How DNS resolves domain names to IP addresses +* The difference between public and private IPs and where they exist +* How CIDR and subnetting control network size and isolation +* Why ports are essential for running multiple services on one machine + +## **Conclusion** + +Day 15 strengthened my understanding of foundational networking concepts that are critical for DevOps engineers. These concepts help in designing networks, troubleshooting connectivity issues, and understanding how applications communicate in real production environments. \ No newline at end of file diff --git a/2026/day-16/check_number.sh b/2026/day-16/check_number.sh new file mode 100644 index 000000000..7db2bb2a9 --- /dev/null +++ b/2026/day-16/check_number.sh @@ -0,0 +1,11 @@ +#!/bin/bash +read -p "Enter your number: " NUM +if [ $NUM -gt 0 ] +then + echo "$NUM is positive" +elif [ $NUM -lt 0 ] +then + echo "$NUM is negative" +else + echo "$NUM is zero" +fi diff --git a/2026/day-16/day-16-shell-scripting.md b/2026/day-16/day-16-shell-scripting.md new file mode 100644 index 000000000..c4643df1f --- /dev/null +++ b/2026/day-16/day-16-shell-scripting.md @@ -0,0 +1,187 @@ +# **Day 16 – Shell Scripting Basics** + +## **Task Objective** + +The objective of Day 16 was to understand shell scripting fundamentals and implement them using hands-on scripts. The focus was on learning how scripts are executed, handling variables, taking user input, applying conditional logic, and combining all concepts into a real-world DevOps script. + +## **Task 1: Shebang and First Script** + +### **Shebang (`#!/bin/bash`)** + +The shebang tells the operating system which interpreter should be used to execute the script. Without a shebang, the script execution depends on how and where it is run, which can lead to unpredictable behavior in automation or production environments. + +### **Script: `hello.sh`** + +\#\!/bin/bash +echo "Hello DevOps\!\!\!" + +### **Observation** + +The script executed even after removing the shebang when run from an interactive Bash shell. However, this behavior is unreliable and should not be depended on. In real-world and production scripts, the shebang is mandatory to ensure consistent execution. + +## **Task 2: Variables** + +### **Concept** + +A variable is used to store values that can change during script execution. Variables help avoid hardcoding values and allow scripts to work dynamically. + +### **Script: `variables.sh`** + +\#\!/bin/bash +NAME="Shivkumar Konnuri" +ROLE="DevOps Engineer" +echo "I am $NAME and I am $ROLE" + +### **Key Learnings** + +* Variables must not have spaces around `=` +* Variables are expanded only when **double quotes** are used +* Single quotes treat variables as literal text and do not expand them +* Variable naming consistency is important + +## **Task 3: User Input using `read`** + +### **Concept** + +The `read` command is used to accept user input at runtime, making scripts dynamic instead of hardcoded. + +### **Script: `greet.sh`** + +\#\!/bin/bash +read \-p "Enter your name: " NAME +read \-p "Enter your favorite tool: " TOOL +echo "Hello $NAME, your favorite tool is $TOOL" + +### **Sample Output** + +Enter your name: Shiv +Enter your favorite tool: Docker +Hello Shiv, your favorite tool is Docker + +### **Key Learnings** + +* `read -p` allows prompting the user for input +* Variable names are case-sensitive +* Consistent variable naming avoids confusion and bugs + +## **Task 4: Conditional Logic (If–Else)** + +### **Concept** + +An `if–else` condition checks whether a condition is true or false and performs actions accordingly. Conditional logic allows scripts to make decisions during execution. + +### + +### + +### **Task 4.1: Number Check Script** + +### **Script: `check_number.sh`** + +\#\!/bin/bash +read \-p "Enter your number: " NUM + +if \[ "$NUM" \-gt 0 \] +then + echo "$NUM is positive" +elif \[ "$NUM" \-lt 0 \] +then + echo "$NUM is negative" +else + echo "$NUM is zero" +fi + +### **Sample Output** + +Enter your number: 4 +4 is positive + +Enter your number: \-2 +\-2 is negative + +Enter your number: 0 +0 is zero + +### **Key Learnings** + +* `-gt`, `-lt`, and `-eq` are used for numeric comparisons +* Correct syntax (`then`, `fi`) is mandatory +* Shell scripting is strict about syntax + +### **Task 4.2: File Existence Check** + +### **Script: `file_check.sh`** + +\#\!/bin/bash +read \-p "Enter the filename: " FILENAME + +if \[ \-f "./$FILENAME" \] +then + echo "File exists" +else + echo "File does not exist" +fi + +### **Sample Output** + +Enter the filename: dummy.txt +File exists + +Enter the filename: dummy1.txt +File does not exist + +### **Key Learnings** + +* `-f` checks for the existence of a regular file +* Scripts should handle both success and failure cases clearly + +## **Task 5: Combining All Concepts – Service Status Check** + +### **Script: `server_check.sh`** + +\#\!/bin/bash +SERVICE=nginx +read \-p "Do you want to check the status? (y/n) \- " STATUS + +if \[ "$STATUS" \= "Y" \] || \[ "$STATUS" \= "y" \] +then + if sudo systemctl is-active \--quiet $SERVICE && sudo systemctl is-enabled \--quiet $SERVICE + then + echo "$SERVICE is active and running" + else + echo "$SERVICE is inactive" + fi +elif \[ "$STATUS" \= "N" \] || \[ "$STATUS" \= "n" \] +then + echo "Skipped" +else + echo "Invalid input. please enter y or n." +fi + +### **Sample Output** + +Do you want to check the status? (y/n) \- y +nginx is active and running + +Do you want to check the status? (y/n) \- n +Skipped + +### **Key Learnings** + +* String comparisons must use `=` and variables must be quoted +* `-eq` is only for numeric comparison +* Quoting variables prevents script failure on empty input +* `systemctl is-active` and `systemctl is-enabled` are useful for service health checks +* Combining multiple scripting concepts results in real-world DevOps automation + +## **Overall Learnings (Day 16\)** + +* Shell scripts should be written defensively +* Quoting variables is critical for stability +* Single and double quotes behave differently +* Syntax discipline is essential in shell scripting +* Real DevOps scripts combine logic, input, and system commands + +## **Conclusion** + +Day 16 provided a strong foundation in shell scripting by focusing on practical scripts that resemble real production scenarios. The hands-on approach helped reinforce best practices and common pitfalls encountered in real-world DevOps work. \ No newline at end of file diff --git a/2026/day-16/file_check.sh b/2026/day-16/file_check.sh new file mode 100644 index 000000000..28fd5394f --- /dev/null +++ b/2026/day-16/file_check.sh @@ -0,0 +1,8 @@ +#!/bin/bash +read -p "Enter the filename: " FILENAME + +if [ -f ./$FILENAME ] +then echo "File exists" +else + echo "File does not exists" +fi diff --git a/2026/day-16/greet.sh b/2026/day-16/greet.sh new file mode 100644 index 000000000..73e0ae06a --- /dev/null +++ b/2026/day-16/greet.sh @@ -0,0 +1,4 @@ +#!/bin/bash +read -p "Enter your name: " NAME +read -p "Enter your favorite tool: " TOOL +echo "Hello $NAME, your favorite tool is $TOOL" diff --git a/2026/day-16/hello.sh b/2026/day-16/hello.sh new file mode 100644 index 000000000..77310fff1 --- /dev/null +++ b/2026/day-16/hello.sh @@ -0,0 +1 @@ +echo "Hello DevOps!!!" diff --git a/2026/day-16/server_check.sh b/2026/day-16/server_check.sh new file mode 100644 index 000000000..6a4b0efad --- /dev/null +++ b/2026/day-16/server_check.sh @@ -0,0 +1,17 @@ +#!/bin/bash +SERVICE=nginx +read -p "Do you want to check the status? (y/n) - " STATUS +if [ "$STATUS" = "Y" ] || [ "$STATUS" = "y" ] +then + if sudo systemctl is-active --quiet $SERVICE && sudo systemctl is-enabled --quiet $SERVICE + then + echo "$SERVICE is active and running" + else + echo "$SERVICE is inactive" + fi +elif [ "$STATUS" = "N" ] || [ "$STATUS" = "n" ] +then + echo "Skipped" +else + echo "Invalid input. please enter y or n." +fi diff --git a/2026/day-16/variables.sh b/2026/day-16/variables.sh new file mode 100644 index 000000000..44ba6c89c --- /dev/null +++ b/2026/day-16/variables.sh @@ -0,0 +1,4 @@ +#!/bin/bash +NAME="Shivkumar Konnuri" +ROLE="DevOps Engineer" +echo "I am $NAME and I am $ROLE" diff --git a/2026/day-17/day-17-scripting.md b/2026/day-17/day-17-scripting.md new file mode 100644 index 000000000..3adfa46b8 --- /dev/null +++ b/2026/day-17/day-17-scripting.md @@ -0,0 +1,151 @@ +# **Day 17 – Shell Scripting: Loops, Arguments & Error Handling** + +## **Objective** + +To understand and practice loops, command-line arguments, package installation using scripts, and basic error handling in shell scripting. + +## **Concepts Learned** + +### **For Loop** + +A for loop is used to repeat the same execution multiple times. + Instead of writing the same command again and again, we use a for loop when we want to perform the same action on multiple values or within a fixed range. + +### **While Loop** + +A while loop runs as long as a condition is true. + It is commonly used when the number of iterations depends on user input or a condition that changes during execution (increment or decrement). + +### **Command-Line Arguments** + +Command-line arguments are values passed to the script at runtime. + They allow scripts to behave dynamically instead of using hardcoded values. + +* $1 → First argument + +* $\# → Total number of arguments + +* $@ → All arguments + +* $0 → Script name + +### **Error Handling** + +Error handling ensures the script exits safely when something goes wrong. + Using set \-e makes the script stop immediately if any command fails. + +## **Task 1: For Loop** + +### **Fruits Loop Script** + +The script prints a list of fruits one by one using a for loop. + +\#\!/bin/bash +for fruits in apple banana mango grapes guava +do + echo "$fruits" +done + +### **Number Count Script (1 to 10\)** + +\#\!/bin/bash +for i in {1..10} +do + echo $i +done + +## **Task 2: While Loop** + +### **Countdown Script** + +This script takes a number from the user and counts down to zero. + +\#\!/bin/bash +read \-p "Enter the start point of the countdown: " START\_NUM +while \[ "$START\_NUM" \-ge 0 \] +do + echo "$START\_NUM" + START\_NUM=$((START\_NUM \- 1)) +done +echo "Done\!\!\!\!" + +### **Observation** + +The issue occurred earlier because arithmetic operations were not done using shell arithmetic syntax. + Using $(( )) fixed the problem. + +## **Task 3: Command-Line Arguments** + +### **Greet Script Using Argument** + +\#\!/bin/bash +if \[ \-z "$1" \] +then + echo "Usage: ./greet.sh \" +else + echo "Hello $1\!" +fi + +### **Arguments Demo Script** + +\#\!/bin/bash +echo "$0" +echo "$\#" +echo "$@" + +## **Task 4: Install Packages via Script** + +### **Why Package Check Is Required** + +Installing an already installed package is unnecessary and may cause errors or conflicts. + Hence, checking before installation is important. + +### **Package Installation Script (Root Check \+ Loop)** + +\#\!/bin/bash +if \[ $(id \-u) \-ne 0 \] +then + echo "FAIL \- Login as a root user to install these packages" + exit 1 +else + apt-get update +fi + +for package\_name in nginx docker.io python3 +do + if dpkg \-s $package\_name &\>/dev/null + then + echo "$package\_name is already installed\!" + else + apt install $package\_name \-y + fi +done + +## **Task 5: Error Handling** + +### **Safe Script with set \-e** + +\#\!/bin/bash +set \-e +mkdir /tmp/devops-test || echo "Directory already exists" +cd /tmp/devops-test +touch new-devops-file.txt + +### **Behavior** + +* Script exits automatically if any unhandled command fails +* Directory creation is handled safely +* File creation happens only after successful directory access + +## **What I Learned** + +* For and while loops help avoid repetitive code +* Command-line arguments make scripts dynamic and reusable +* Checking user input and root access is critical in production scripts +* set \-e helps fail fast and avoid partial execution +* Package installation scripts should always validate system state first + +## **Conclusion** + +This day helped me understand how real-world automation scripts are written using loops, arguments, and error handling. These concepts are directly applicable in DevOps tasks like server setup, automation, and maintenance. +