Admin scripts.

Commit
90e70299d4680e9e5e9d36967ea341728745f95a
Author
Marius Peter <marius.peter@tutanota.com>
Author date
Committer
Marius Peter <marius.peter@tutanota.com>
Committer date
scripts.org
index 00000000..b179385b 000000..100755
@@ -0,0 +1,89 @@
1 Added: #+TITLE: Scripts for admin
2 Added: #+AUTHOR: Marius Peter
3 Added: #+DATE: <2022-01-23 Sun>
4 Added:
5 Added: #+begin_abstract
6 Added: The code blocks contained in this ~Smart Document~ are Bash and Python
7 Added: scripts that automate certain sysadmin tasks on my local box.
8 Added: #+end_abstract
9 Added:
10 Added:
11 Added: * Helper functions
12 Added:
13 Added: These helper functions were adapted from the Guix project.
14 Added:
15 Added: #+NAME: helper-functions
16 Added: #+BEGIN_SRC sh :results verbatim
17 Added: timestamp() { date --rfc-3339=s; }
18 Added:
19 Added: _err()
20 Added: { # All errors go to stderr.
21 Added: printf "[%s]: %s\n" "$(date +%s.%3N)" "$1"
22 Added: }
23 Added:
24 Added: _msg()
25 Added: { # Default message to stdout.
26 Added: printf "[%s]: %s\n" "$(date --rfc-3339=s)" "$1"
27 Added: }
28 Added:
29 Added: _debug()
30 Added: {
31 Added: if [ "${DEBUG}" = '1' ]; then
32 Added: printf "[%s]: %s\n" "$(date +%s.%3N)" "$1"
33 Added: fi
34 Added: }
35 Added:
36 Added: # Return true if user answered yes, false otherwise.
37 Added: # $1: The prompt question.
38 Added: prompt_yes_no() {
39 Added: while true; do
40 Added: read -rp "$1 " yn
41 Added: case $yn in
42 Added: [Yy]*) return 0;;
43 Added: [Nn]*) return 1;;
44 Added: ,*) _msg "Please answer yes or no."
45 Added: esac
46 Added: done
47 Added: }
48 Added: #+END_SRC
49 Added:
50 Added: * Backup
51 Added:
52 Added: This scripts
53 Added: #+BEGIN_SRC bash :noweb yes :results verbatim
54 Added: <<helper-functions>>
55 Added: bkp_dirs=("~/Desktop" \
56 Added: "~/Documents" \
57 Added: "~/git" \
58 Added: "~/Music/" \
59 Added: "~/org/" \
60 Added: "~/.emacs.d")
61 Added: _msg "Preparing backup..."
62 Added: _msg "List of directories to backup:"
63 Added: # printf "%s\n" ${bkp_dirs[*]}
64 Added:
65 Added: for file in $(ls)
66 Added: do
67 Added: rsync -a $file bkp/
68 Added: printf "Successfully sent file %s\n" $file
69 Added: done
70 Added:
71 Added: rsync -a ./ ./bkp
72 Added: _msg "Backup was completed successfully!"
73 Added: #+END_SRC
74 Added:
75 Added: #+RESULTS:
76 Added: #+begin_example
77 Added: [2022-01-23 16:30:36+01:00]: Preparing backup...
78 Added: [2022-01-23 16:30:36+01:00]: List of directories to backup:
79 Added: Successfully sent file Makefile
80 Added: Successfully sent file README.org
81 Added: Successfully sent file bashrc.org
82 Added: Successfully sent file bkp
83 Added: Successfully sent file herbstluftwm-autostart.org
84 Added: Successfully sent file panel.sh
85 Added: Successfully sent file scripts.org
86 Added: Successfully sent file test.ml
87 Added: Successfully sent file xinitrc.org
88 Added: [2022-01-23 16:30:36+01:00]: Backup was completed successfully!
89 Added: #+end_example