Linux 101

linux zvevqx 2025-11-22

learn more about ssh -> https://www.ssh.com/ssh/

start terminal ctrl + alt + t

ssh -p portnumber pi@ipaddress
ssh user @ distant_server.address : connection_port (default to 22 )

ssh pi@192.168.1.24

⚠️ linux user : to copy inside the terminal : ctrl + shift + c to paste inside the terminal : ctrl + shift + v

ssh -p 55 pi@er401.duckdns.org


create your new home

first

  1. create a User
    sudo useradd <username>
  1. add user to groups and privilege

  2. add user to admin list

    sudo usermod -a -G sudo yourUserName
    chsh -s /bin/zsh
    exit
  1. reconnect with your username and password
    ssh YOUR_USER_NAME@ADRESSEIP
  1. welcome to your new home

    1. your home folder is in /home/yourUserName
      1. hint : you can check where you are with the command pwd (Print Working Directory)
    2. learm about linus folder structure -> learn more

DO SOME STUFF

general cli commands

navigate

system stuffs

general help


getting started with python

==underconstruction==

uc

just some code to try

import time
import math
x = 0
try :
    while True:
        x = x+1
        time.sleep(0.5)
        print(" la vlaeur de x est de = {}".format(x))
        if x>100:
            x=0

except KeyboardInterrupt:
    print('Hello user you have pressed ctrl-c button.')

create a simple chat with python

https://python.plainenglish.io/create-a-basic-lan-chat-room-with-python-f334776bf70c

fixed code

===client===

import socket
import threading

my_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

PORT = 8000
ADDRESS = "localhost" # Same as "127.0.1.1"

my_socket.connect((ADDRESS, PORT))

nickname = input("Choose your nickname : ").strip()


while not nickname:
    nickname = input("Your nickname should not be empty : ").strip()



def thread_sending():
    while True:   
        message_to_send = input("your message :")
        if message_to_send:
            message_with_nickname = nickname + " : " + message_to_send
            my_socket.send(message_with_nickname.encode())    


def thread_receiving():
    while True:
        message = my_socket.recv(1024).decode()
        print(message)


thread_send = threading.Thread(target=thread_sending)
thread_receive = threading.Thread(target=thread_receiving)


thread_send.start()
thread_receive.start()

===server===

import socket
import threading 

my_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

PORT = 8000
ADDRESS = "0.0.0.0"

broadcast_list = []


my_socket.bind((ADDRESS, PORT))


def thread_accept():
    while True:
        my_socket.listen()
        client, client_address = my_socket.accept()
        broadcast_list.append(client)
        start_listenning_thread(client)

def start_listenning_thread(client):
    client_thread = threading.Thread(
            target = listen_thread,
            args = (client,) #the list of argument for the function
        )
    client_thread.start()

def listen_thread(client):
    while True:
        message = client.recv(1024).decode()
        if message:
            print(f"Received message : {message}")
            broadcast(message)
        else:
            print(f"client has been disconnected : {client}")
            return


def broadcast(message):
    for client in broadcast_list:
        try:
            client.send(message.encode())
        except:
            broadcast_list.remove(client)
            print(f"Client removed : {client}")


thread_accept()


create folder in apache server

wft is apache :

apache is a http web server wiki page

there other solution like [https://www.lighttpd.net/]{https://www.lighttpd.net/} or the popular https://nginx.org/en/

apache is well documented and often the one you'll find on a web server service

  1. create folder first with your username
    sudo mkdir -p /var/www/html/$USER 
  1. change ownership to your user
    sudo chown -R $USER:$USER /var/www/html/$USER
  1. make sure permissions on www are ok
    sudo chmod -R 755 /var/www
  1. create your first webpage to serve
    touch /var/www/html/$USER/index.html
  1. put something in it
    nano /var/www/html/$USER/index.html
    or 
    vim /var/www/html/$USER/index.html
  1. content example
    <html>
       <head>
          <meta charset="UTF-8">
          <title>Welcome to my page</title>
       <style>
         h1{
         font-size : 42px;
         }
        </style>
       </head>
    <body>
          <h1> 📡 Success!! 📡 </h1>
    </body>
    </html>

mjpeg-streamer ( video server )

https://github.com/jacksonliam/mjpg-streamer

github project page

⚠️ don't follow the instructions during this class ( installation already done )