{{tag>Script Bash}}
= Notes script bash
Voir
* https://linux.goffinet.org/administration/scripts-shell/
* http://pteu.fr/doku.php?id=informatique:linux:programmation_shell
Voir aussi :
* tinyramfs (implémentation initramfs écrite en shell POSIX
== Variables
=== Fichier dans une variable - variable heredoc
ETCHOSTS=$(cat << 'EOF'
10.245.97.221 node1
10.245.102.221 node1b
EOF
)
== Les boucles
Voir aussi :
* [[Notes parallel multithread multicore process shell|Les commandes Xargs et Find]] qui peuvent être des alternatives aux boucles
=== For
for (( i=1; $i<=10; i=i+1 ))
do
echo $i
done
Voir exemple avec ''seq'' ci-dessous
=== seq
#for i in $(seq 10)
for i in $(seq 1 10)
do
echo $i
done
for i in {1..5}
do
echo $i
done
seq -f "%f" 3 0.8. 6
seq -f "%g/04/2018" 10
seq -s - 8
=== pb curl break
''fic.lst''
foo
bar
''plop_sleep.sh''
#! /bin/bash
while read -r var
do
echo $var
timeout 1 sleep inf
done < fic.lst
''plop_curl.sh''
#! /bin/bash
while read -r var
do
echo $var
timeout 1 curl -s telnet://localhost:22
done < fic.lst
$ ./plop_sleep.sh
foo
bar
$ ./plop_curl.sh
foo
Contournement
''plop_curl_2.sh''
#! /bin/bash
while read -r var
do
echo $var
echo timeout 1 curl -s telnet://localhost:22 | bash -s --
done < fic.lst
Vraie solution
''plop_curl_2.sh''
#! /bin/bash
while read -r var
do
echo $var
timeout 1 curl -s telnet://localhost:22
=== Gérer les locks
flock -n /tmp/plop.lock -c /opt/plop1.sh -c /opt/plop2.sh
== bash Options
=== Bash suid binary privilege escalation
sudo cp -p /usr/bin/bash /usr/bin/bash-backdoor
sudo chmod u+s /usr/bin/bash-backdoor
/usr/bin/bash-backdoor -p