-
Notifications
You must be signed in to change notification settings - Fork 0
/
USO_v2
346 lines (301 loc) · 19.7 KB
/
USO_v2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
## https://onceupon.github.io/Bash-Oneliner/
## https://www.bashoneliners.com/
## https://ocw.cs.pub.ro/courses/uso/laboratoare/laborator-08
## https://ocw.cs.pub.ro/courses/uso/laboratoare/laborator-10
******************************************************************************************************
--ALTELE--
userls -Rl -> afisare detaliata si recursiva
ln -s {nume_fisier} {denumire} -> asociez unei cai un nume, creeez link/legatura
alias {nume_dat_de_mine}="{comanda}" -> asociez unei comenzi un nume, creez alias
unalias {nume_alias} -> stergere completa alias
echo $? -> afiseaza 0, daca ult comanda a avut succes
wc -l -> afiseaza nr de linii
tldr {expresie/comanda} -> man dar mai pe scurt
last -{numar} -> afiseaza ultimele {numar} logari
mkfs {nume_disc} -> formateaza un nume_disc
free -> afiseaza memoria libera
history -> afiseaza intreg istoricul de comenzi
!! -> folosire comanda anterioara
Ctr + r -> cautare recursiva in istoric
${comanda} -> duce output-ul ca argument unei alte comenzi
comanda ... | comanda ... -> duce output-ul ca input unei alte comenzi
**********************************************************************************************************
--FILES--
sudo pentru acces garantat
cd {cale_fisier} ->schimbare director
cd - -> revenire la directorul anterior
file/stat {nume_fisier} -> afisare metadate fisier
ls -hairls -> multe informatii despre fisiere
ls -ld -> afiseaza doar directoarele
ls -l --sort=size -> afiseaza fisierele sortate dupa dimensiunea in octeti
touch {nume_fisier}, > {nume_fisier} -> creeaza fisier
cp -r {sursa} {destiantie} ->copiere recursica fisiere
mv {fisier_sursa} {fisir_destinatie} -> mutare/redenumire fisier
cmp {fisier1} {fisier2} -> compare byte cu byte un fisier
cat {fisier} -> afisare continut fisier
rm -rf {nume_fisiere} -> stergere recursiva si fortata fisiere/folder
!! mare atentie la stergerea recursiva
locate {fisier} -> localizeaza fisiere strict dupa nume
find {calea_catre_fisier} -name "nume" -type {f,l,d} -size +/-1024k
-> cauta un fisier intr-o cale dupa nume, tip si dimensiune
whereis, which, type -> informatii depre comenzi
whereis ls
which ls
type ls -> recomandat pentru alias-uri
./program < fisier_intrare -> preia outputul din fisier
./program > fisiere_de_iesire -> duce outputul in fisier
./program 2> fis, ier_erori -> redirectare erori in fisiserele
./program 2> & 1 -> redirectare erori catre iesirea standard
./program; >> fisier -> adaugare in continuarea fisierului
(comanda ; comanda ; ..) > fisier -> redirectarea tuturor comenzilor intr-un fisier
EX: ( ls ; ps ) > a.out
/dev/null -> ignora orice este scris in elementele
/dev/zero -> generator de octeti de zero cat ii sunt ceruti
/dev/urandom -> generator de octeti pentru extragerea de caractere`
dd if=/dev/urandom of=rand-100mb count=100 bs=1M
-> if - input file - calea către fișierul de unde citim
-> of - output file - calea către fișierul unde scriem
-> bs - block size - dimensiunea unui block citit din if
-> count - block count - numărul de block-uri citite
***********************************************************************************************************
--PERMISSIONS--
chown {utilizator} {fisier} -> permisiune fisier utilizatori
chgpr {utilizator} {fisier} -> permisiune fisier grup
chmod +/-[rwx] {file} -> adaugare/stergere o permisiune fisier catre utilizator curent
chmod {nr1nr2nr3} {file} -> adaugare permisiuni; nr1, nr2, nr3 = numere care in binar
reprezinta permisiuni in urm ord: user, group, others
owner/User,Group,Others
--- --- ---
r = 4
w = 2
x = 1
un utilizator poate modifica -> Shellul de login, folosind comanda chsh
-> Informațiile legate de nume, folosind comanda chfn
-> Parola, folosind comanda passwd
*************************************************************************************************************
--USER--
finger/pinky {utilizator} -> aflare detalii despre acel utilizator
id {utilizator} -> informatii utilizator
users, w, who {utilizator} -> utilizatorii autentificati in sistem acum
sudo su {utilizator} -> schimba utilizatorul in cel specificat
sudo useradd -m -d {home_directory} {user} -> creez utilizator nou cu tot si setez directorul home
sudo adduser {user} -> adaugare user
sudo deluser {user} -> delete user
sudo addgroup {group} -> adaugare grup
id {user} -> verificare id user
su {user} -> schimbare user
passwd {user} -> schimbare parola user
chsh -> schimbare shell de login
sudo usermod {user} -s {cale shell} -> schimbare shell default pentru un utilizator
sudo usermod {user} -G {grup} -> adaugare user intr-un grup
sudo usermod -a -G {grup1,grup2,etc} -> adaugare user curent in mai multe grupuri
sudo usermod -d {cale_fisier} {user} -> schimbare director pentru user
sudo usermod --expiredate 1 {utilizator} -> dezactiveaza contul si nu mai poate fi folosit
***********************************************************************************************************
--ARHIVARE/DEZARHIVARE--
sudo tar -cvjSf {nume}.tar.bz2 {cale_folder} -> arhivare foler in arhiva de tipul .tar.bz2
zip -r archivename.zip directory_name -> arhivare director in zip
zip myfile.zip filename.txt -> arhivare folder in zip
tar -cvf {nume}.tar {fisiere_de_arhivat} ->arhiveaza tip tar fisiserele
tar --append --file={arhiva}.tar {file} -> append file la o arhiva
tar -tf {archive}.tar -> pentru a vedea continutul arhivei
tar -xf {cale_arhiva}.tar -> pentru dezarhivare
*************************************************************************************************************
--GLOBBING--
grep -n {pattern} {cale} -> afiseaza nr liniei care contine pattern-ul cautat
-i case senzitive
-v excluderea unui cuvant/pattern
-r cautare recursiva intr-un folder
cut -d'{delimitator(:,..)}' -f{nr_col1},{nr_col2} -> extrage informatii pe linii si coloane
cat /etc/passwd | cut -f1 -d ":" -> selecteaza continutul afisat dupa prima
coloana data de separatorul :
tr "ceva" "altceva" -> inlocuieste "ceva" cu "altceva"
sed 's/ceva/altceva/g' {file} -> inlocuieste "ceva" cu "altceva", pe linie (if fara g, atunci tot)
foloseste flagul "-i" pentru a inlocui "inplace"
sed -n {line_m},{line_n}p {cale_fisier} -> afiseaza liniile din intervalul [m, n]
sort -t '{separator}' -k {nr_col_infdecaresortam(ex. 3,3)} {file}-> sorteaza (daca vrem sort invers, punem -r)
***************************************************************************************************************
--INSTALL--
sudo apt update -> face update
sudo apt install {pachet} -> instalare pachet
sudo apt-get install {numele comenzii} -> instalare comanda
sudo apt search {nume_pachet} -> cauta un pachet de instalat
apt show {pachet} -> afiseaza date despre pachet
sudo apt remove {nume_pachet} -> dezinstaleaza pachet
sudo apt -d remove {pachet} -> descarca pachet fara a-l instalare
sudo pip3 list -> afiseaza pachetele instalate local
**********************************************************************************************************
--IP--
ping -c 4 8.8.8.8 -> verificare internet
dhclient eth1 -> a obține o adresă IP în mod dinamic pe o interfață
ip address flush eth1 -> a șterge o adresă IP de pe o interfața
ip address show -> afisarea adreselor ip
ip addr add {adresa_ip} dev eth0 -> pentru a atribui o adresa IPv4 unei interfete
ip link set dev eth0 up -> pentru a trece interfata eth0 pe UP
ip addr {adresa_IPv4} dev eth0 -> pentru a sterge o adresa IPv4
wget {adresa_pagina_web} -> pentru a descarca o pagina web
traceroute {adresa_web} -> verificare conectivitate placa retea
link set dev {nume_interfata} down/up -> dezactiveaza/activeaza interfata
sudo ip address flush orice configurat, ii anterioare ale interfete sunt sterse
hostname -I | cut -f1 -d ' ' -> afiseaza doar adresa IPv4
**********************************************************************************************************************
--SSH--
scp {cale_fisier} [email protected]:{destinatie} -> trimiterea fisierelor la distanta prin ssh catre o noua statie
scp [email protected]:/etc/resolv.conf . -> descarcarea fisierelor de la o statie prin ssh in fisierul curent
scp -r ./Downloads/ [email protected]:~/ -> Comanda anterioară a copiat directorul Downloads și conținutul
său din directorul curent în directorul home al utilizatorului
root de la adresa 10.10.10.3
ssh-keygen -> pentru generarea unei perechi de key
ssh-copy-id [email protected] -> Pentru copierea cheii publice pe o stație
ssh-copy-id {nume_user}@vmx.cs.pub.ro -> adaugarea cheii publice în contul utilizatorului de la distanta
ssh [email protected] -> in urma copierii cheii publice în contul utilizatorului de la distanta,
se poate realiza autentificarea fara parola
ssh -X <username>@fep.grid.pub.ro -> pentru a ne conecta la o statie
systemctl status {nume_serviciu} -> afiseaza stare serviciului (ex. ssh, ...)
systemctl start {nume_serviciu} -> face activ serviciul
systemctl stop {nume_serviciu} -> face inactiv serviciul
--PROCESE--
ps -ef -> afisare procese
ps -o pid,ppid,user,rss,%cpu -> afisare procese cu format
ps -ef --sort=%mem -> sortare procese dupa memoria consumata
pidof {nume_program/proces} -> afiseaza pidul programului/procesului
kill -l -> lista comenzilor de "kill"
kill -9 {PID} -> BOMBA NUCLEARA PE PROCES
pgrep, pidof, pstree, pmap, lsof, top, htop -> investigare, urmarire si management procese
mount, lscpu, free, df, lsblk -> mai multe informatii despre
********************************************************************************************************************
--SHELL SCRIPTING--
sed 's/{ceva}/{altceva}/' text.txt -> prima aparitie de pe fiecare linie a lui "ceva" este inlocuita
cu "altceva" din fisierul text
sed 's/{ceva}/{altceva}/g' text.txt -> toate aparitiile lui "ceva" sunt inlocuite cu "altceva" din
textul dat
sed '/{ceva}/d' text.txt -> sterge linia care contine "ceva"
cut -d " " -f 1 text.txt -> afiseaza prima coloana din "text.txt" dupa delimitatorul " "
seq -> genereaza o secvență de numere. Flagul -s este folosit pentru a
stabili caracterul care delimitează numerele
wc text.txt -> echo {numarul de linii}, {numarul de cuvinte}, {numarul de caractere}
$a -eq $b -> a egal cu b
$a -gt $b -> a mai mare ca b
sort -> soteaza un fisier (-t specifica separatorul; -k specifica
indexul/cheia coloanei, -n sortare numerica; -r sortare inversa)
uniq -> selecteaza elementele unice
$* -> este un string ($1, $2 … $n) format din toate argumentele
primite de script
$@ -> este o listă formată din argumentele scriptului
$1, $2 … $n -> reprezintă fiecare parametru din script
$0 -> este numele scriptului
$# -> este numărul de argumente primite din linia de comandă
IFS="{separator}" -> (Internal Field Separator) definește caracterul sau caracterele
care vor fi folosite pentru împărțirea unei linii în câmpuri (splitting).
ps aux | awk '{ print $1 }' | sed '1 d' | sort | uniq | wc
-> numarul de utilizatorii de pe sistemul local care au procese pornite.
xdg-open google.com -> deschide site-ul google.com
for i in *.svg; do inkscape --export-png=$(basename "$i" .svg).png "$i"; done -> conversie fisiere in png
{nume_variabila}={valoare} -> initializare nume_variabila
${variabila} -> accesare continut variabila
unset {nume_variabila} -> anuleaza definirea variabilei
while [conditie] if [teste] for i in $#
do then do
{comnds} {comands} {comands} -> instructiuni in shell
done fi done
*******************************************************************************************************************************
--RegEX--
^ -> început de linie
$ -> sfârșit de linie
. -> orice caracter
* -> expresia anterioară de oricâte ori, posibil niciodată
+ -> expresia anterioară de oricâte ori, cel puțin o dată
[] -> folosita pentru selectarea de caractere
{} -> folosit pentru selectia de siruri de caractere
[ajt] -> orice caracter din setul de caractere a, j, t
[^ajt] -> orice caracter mai puțin caracterele a, j, t
| -> expresia anterioară sau expresia de după (una dintre cele două expresii)
? -> expresia anterioară o dată sau niciodată
[a-z]+,[0-9]+ -> se potrives, cu un nume format din litere mici urmat de virgula si un numar
************************************************************************************************************************
--ENCODING/HASHING--
echo -n "{text}" | base64 -> encodeaza in base 64
echo -n "{text_encodat}" | base64 -d -> decodeaza din base 64
echo -n "{text}" | md5sum -> genereaza hashul
fcrackzip -v -l 1-4 -u secret_brute_force.zip -> sparge o parola de maxim 4 caractere din secret_brute_force.zip
openssl aes-{nr_biti_cheie}-{mod_de_criptare}
-in {input_file} -out {output_file} -> encriptare in AES cu 192 de biti si modul CBC
EX: openssl aes-256-cbc -in plaintext_file.txt -out encrypted_file.enc -pass pass:"uso rules"
pentru decriptare adaugam flag-ul -d
--GIT--
git init -> creare repository local
git status -> verificare stare repository
git add {fisier} -> aduagare fisier in staging area
git commit -m "message"
git log -> verificare istoric comituri
git push origin master
git branch
git branch {nume_branch} -> adaugare branch
git checkout {nume_branch} -> schimbare branch
git merge {nume_branch} -> merge intre 2 branchuri
*******************************************************************************************************************************
find /lib -type f -name "*.ko" -size +1M -> afisare fisiere (intrega cale) cu dimensiunea mai mare de 1M si un nume dat
find /lib -type f -name "*.ko" -printf "%f\n" -> afisare doar numele fisierului dintr-o ierarhie
sed -ie 's/dog/cat/g' stories.txt -> inlocuieste toate aparitiile unui cuvant cu altul
ps -ef | cut -f1 -d " " -> afiseaza doar numel fiecarui serviciu din sistem
cat task4c.txt | base64 > task4c.base -> cripteaza continul unui fisiser si il duce in altul
sudo useradd -s /usr/bin/zsh Iron-Man -> creeaza un utilizator cu shell implicit
cat /proc/cpuinfo| head -4 | tail -1 -> afiseaza numele procesorului de pe masina
awk '/^Mem/ {print $3}' <(free -m) -> afiseaza doar memoria libera de pe masina
ss -lntu | tail -5 -> afiseaza porturile TCP care asculta pe masina
printf 'HelloWorld\n%.0s' {1..5} // yes "HelloWorld" | head -n 5 -> afiseaza un string de 5 ori
cat /etc/passwd | cut -c 1-n -> afiseaza doar primere n caracterede pe fiecare linie
chsh -s /bin/sh bonnie -> schimba shelul unui utilizator
sudo gpasswd -a nice docker -> adauga utilizatorul nice la grupul docker
sudo chomd o+rw /home/public/bean -> elfo are drept de r si w asupra fisierelor din ierarhia ...
sed $nr1 $nr2 -> afisare numerele in intervalul nr1 si nr2
host uso.cs.pub.ro -> afiseaza adresa ip a domeniului uso.cs.pub.ro
ssh {nume}@fep.grid.pub.ro -> conectare prin ssh la adresa fep.grd..
grep rw /proc/mounts | cud -d " " -f2 -> afisare caile unde sunt montate doar sisteme de fisiere r-obține
sudo lsof -> afsare serviciile pornite pe sistem
cat /etc/passwd | grep /bin/false | cut -d ":" -f1 -> afisare doar numele utilizatorului care are configurat shelul implicit ....
dd if=/dev/ruandom of=random10M bs=10M -> creare fisier cu continut random de 100mb
sudo mkfs -t ext4 /dev/sdb1 -> format fisier de la calea in tip ext4
printenv | grep ^X* -> afisare numele variabilei de mediu care incepe cu X
ssh-keygen + ssh-copy-id nume@statie -> conectare fara parola la statia ..
sudo usermod -d /home/marcela_dir marcela -> schimba home directory-ul unui user.
sudo usermod -a -G studenti marcela -> adauga un user la un grup
usermod -d /home/private/elfo elfo -> modificare director parinte pentru utilizatorul elfo
sudo chfn marcela -> schimba informatii legate de contul de utilizator
mount /dev/sdb1 /mnt/ -> mount + partiția + locația
----a pretty nice script----does not stop when you press ctrl + c----
#!/bin/bash
function no_ctrlc()
{
let ctrlc_count++
echo
if [[ $ctrlc_count < 99999999 ]]; then
echo "USO doesn't stop!"
fi
}
trap no_ctrlc SIGINT
while true
do
echo Mwahaha
sleep 2
done
#!/bin/bash
function no_ctrlc()
{
let ctrlc_count++
echo
if [[ $ctrlc_count < 99999999 ]]; then
echo "Nu ma opresti"
elif [[ $ctrlc_count == 2 ]]; then
echo "Once more and I quit."
else
echo "Haha nu ma inchizi"
exit
fi
}
trap no_ctrlc SIGINT
while true
do
echo Mwahaha
sleep 2
done