Журнал лабораторных работ

Содержание

Журнал

Среда (03/29/17)

/dev/pts/0
11:49:06
#ls
backup   bin  debian3       debian3.text2  file         granata.jpg                            lpi 1  man_smb_conf  names    pamyatka.pdf  press_any_key_to_continue.jpg  screenrc  temp.tar  touchlist
bigfile  cod  debian3.text  debian3.txt    freebsd.jpg  light_alloy_4.4.784_rc2_by_fafnir.exe  lpi 2  matrix.jpg    ogo.jpg  passwd        proj                           sh        text
11:49:07
#find ~ -regex '.*(\.tar|\.gz|\.tgz|\.rmp)'

11:49:16
#man find
11:50:28
#find ~ -regex '.*(\.tar|\.gz|\.tgz|\.rmp)' -regextype posix-egrep

11:50:38
#ls
backup   bin  debian3       debian3.text2  file         granata.jpg                            lpi 1  man_smb_conf  names    pamyatka.pdf  press_any_key_to_continue.jpg  screenrc  temp.tar  touchlist
bigfile  cod  debian3.text  debian3.txt    freebsd.jpg  light_alloy_4.4.784_rc2_by_fafnir.exe  lpi 2  matrix.jpg    ogo.jpg  passwd        proj                           sh        text
11:50:41
#pwd
/home/user
11:50:42
#find ~user -regex '.*(\.tar|\.gz|\.tgz|\.rmp)' -regextype posix-egrep

11:50:51
#find ~user -regex '.*(\.tar\.gz|\.tgz|\.rmp)' -regextype posix-egrep

11:51:03
#find ~user -regex '.*(\.tar|\.gz|\.tgz|\.rmp)' -regextype posix-egrep

11:51:05
#find /home/user/ -regex '.*(\.tar|\.gz|\.tgz|\.rmp)' -regextype posix-egrep
.aptitude/                             cod/                                   .l3rc                                  names/                                 sh/
backup/                                debian3                                .lesshst                               ogo.jpg                                .ssh/
.bash_history                          debian3.text                           light_alloy_4.4.784_rc2_by_fafnir.exe  pamyatka.pdf                           temp.tar
.bash_logout                           debian3.text2                          .lilalo/                               passwd                                 text/
.bash_profile                          debian3.txt                            lpi 1/                                 press_any_key_to_continue.jpg          touchlist
.bashrc                                file                                   lpi 2/                                 .profile                               .vifm/
bigfile                                freebsd.jpg                            man_smb_conf                           proj/                                  .viminfo
bin/                                   granata.jpg                            matrix.jpg                             screenrc                               .w3m/
11:51:24
#ls /home/user/
.aptitude/                             cod/                                   .l3rc                                  names/                                 sh/
backup/                                debian3                                .lesshst                               ogo.jpg                                .ssh/
.bash_history                          debian3.text                           light_alloy_4.4.784_rc2_by_fafnir.exe  pamyatka.pdf                           temp.tar
.bash_logout                           debian3.text2                          .lilalo/                               passwd                                 text/
.bash_profile                          debian3.txt                            lpi 1/                                 press_any_key_to_continue.jpg          touchlist
.bashrc                                file                                   lpi 2/                                 .profile                               .vifm/
bigfile                                freebsd.jpg                            man_smb_conf                           proj/                                  .viminfo
bin/                                   granata.jpg                            matrix.jpg                             screenrc                               .w3m/
11:51:24
#ls /home/user/
backup   bin  debian3       debian3.text2  file         granata.jpg                            lpi 1  man_smb_conf  names    pamyatka.pdf  press_any_key_to_continue.jpg  screenrc  temp.tar  touchlist
bigfile  cod  debian3.text  debian3.txt    freebsd.jpg  light_alloy_4.4.784_rc2_by_fafnir.exe  lpi 2  matrix.jpg    ogo.jpg  passwd        proj                           sh        text
11:51:36
#ls /home
ivan  petr  user
11:51:58
#find /home/user -regex '\.tar' -regextype posix-egrep

11:52:10
#find /home/user/ -regex '\.tar' -regextype posix-egrep

11:52:20
#find /home/user/ -regex '\.tar' -regextype posix-egrep

11:52:37
#find /home/user/ -regex '\.tar'

11:52:42
#find /home/user/ -regex '*\.tar'

11:52:45
#find /home/user/ -regex '*\.tar'

прошло 49 минут
12:42:44
#find /home/user/ -regex '*\.tar'

12:45:51
#ls
backup   bin  debian3       debian3.text2  file         granata.jpg                            lpi 1  man_smb_conf  names    pamyatka.pdf  press_any_key_to_continue.jpg  screenrc  temp.tar  touchlist
bigfile  cod  debian3.text  debian3.txt    freebsd.jpg  light_alloy_4.4.784_rc2_by_fafnir.exe  lpi 2  matrix.jpg    ogo.jpg  passwd        proj                           sh        text
12:45:52
#find /home/user/ -regex '*\.tar'

12:46:02
#pwd
/home/user
12:46:06
#man find
12:52:26
#man find
12:52:56
#find /home/user/ -regextype posix-grep -regex '*\.tar'
find: Unknown regular expression type `posix-grep'; valid types are `findutils-default', `awk', `egrep', `ed', `emacs', `gnu-awk', `grep', `posix-awk', `posix-basic', `posix-egrep', `posix-extended', `posix-minimal-basic', `sed'.
12:53:00
#find /home/user/ -regextype posix-egrep -regex '*\.tar'

12:53:08
#find /home/user/ -regextype posix-egrep -regex '.*\.tar'
/home/user/temp.tar
12:53:12
#a=1

12:53:35
#env
SHELL=/bin/bash
TERM=xterm
HISTSIZE=2000
SSH_CLIENT=192.168.16.187 49228 22
L3_PARENT_TTY=/dev/pts/0
L3_TAMPERED_EDITORS= vi vim pico nano
SSH_TTY=/dev/pts/0
USER=root
HISTFILESIZE=2000
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAIL=/var/mail/root
L3_SESSION_ID=31383263589649259-1490769712
PWD=/home/user
LANG=ru_RU.UTF-8
12:53:36
#echo $a
1
12:53:51
#bash
root@debian3:/home/user# echo $a
root@debian3:/home/user# pstree
init─┬─acpid
     ├─cron
     ├─exim4
     ├─6*[getty]
     ├─2*[l3-agent]
     ├─rsyslogd───3*[{rsyslogd}]
     ├─sshd───sshd───bash───script───script───l3script───bash───pstree
     └─udevd
root@debian3:/home/user# pstree -h
init─┬─acpid
     ├─cron
     ├─exim4
     ├─6*[getty]
     ├─2*[l3-agent]
     ├─rsyslogd───3*[{rsyslogd}]
     ├─sshd───sshd───bash───script───script───l3script───bash───pstree
     └─udevd
root@debian3:/home/user# exit
12:57:51
#echo $a
1
12:57:57
#pstree -h
init─┬─acpid
     ├─cron
     ├─exim4
     ├─6*[getty]
     ├─2*[l3-agent]
     ├─rsyslogd───3*[{rsyslogd}]
     ├─sshd───sshd───bash───script───script───l3script───pstree
     └─udevd
12:58:03
#export a

12:58:11
#bash
root@debian3:/home/user# echo $a
1
root@debian3:/home/user# exit
12:59:02
#set
BASH=/usr/local/bin/l3script
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="4" [1]="2" [2]="37" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu")
BASH_VERSION='4.2.37(1)-release'
...
MACHTYPE=x86_64-pc-linux-gnu
MAIL=/var/mail/root
MAILCHECK=60
OLDPWD=/home
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PIPESTATUS=([0]="0")
PPID=14495
12:59:06
#env
SHELL=/bin/bash
TERM=xterm
HISTSIZE=2000
SSH_CLIENT=192.168.16.187 49228 22
L3_PARENT_TTY=/dev/pts/0
OLDPWD=/home
L3_TAMPERED_EDITORS= vi vim pico nano
SSH_TTY=/dev/pts/0
USER=root
HISTFILESIZE=2000
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAIL=/var/mail/root
L3_SESSION_ID=31383263589649259-1490769712
a=1
PWD=/home/user
LANG=ru_RU.UTF-8
12:59:10
#export
declare -x HISTFILESIZE="2000"
declare -x HISTSIZE="2000"
declare -x HOME="/root"
declare -x L3_HOME="/root/.lilalo/"
declare -x L3_PARENT_TTY="/dev/pts/0"
declare -x L3_SESSION_ID="31383263589649259-1490769712"
declare -x L3_TAMPERED_EDITORS=" vi vim pico nano"
declare -x LANG="ru_RU.UTF-8"
declare -x LANGUAGE="ru_UA:ru"
declare -x LOGNAME="root"
declare -x MAIL="/var/mail/root"
declare -x OLDPWD="/home"
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
12:59:38
#man set
13:00:17
#help set
set: set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
    Set or unset values of shell options and positional parameters.
    Change the value of shell attributes and positional parameters, or
    display the names and values of shell variables.
    Options:
      -a  Mark variables which are modified or created for export.
      -b  Notify of job termination immediately.
      -e  Exit immediately if a command exits with a non-zero status.
      -f  Disable file name generation (globbing).
      -h  Remember the location of commands as they are looked up.
...
          are unset.
      -   Assign any remaining arguments to the positional parameters.
          The -x and -v options are turned off.
    Using + rather than - causes these flags to be turned off.  The
    flags can also be used upon invocation of the shell.  The current
    set of flags may be found in $-.  The remaining n ARGs are positional
    parameters and are assigned, in order, to $1, $2, .. $n.  If no
    ARGs are given, all shell variables are printed.
    Exit Status:
    Returns success unless an invalid option is given.
13:01:34
#help
GNU bash, version 4.2.37(1)-release (x86_64-pc-linux-gnu)
These shell commands are defined internally.  Type `help' to see this list.
Type `help name' to find out more about the function `name'.
Use `info bash' to find out more about the shell in general.
Use `man -k' or `info' to find out more about commands not in this list.
A star (*) next to a name means that the command is disabled.
 job_spec [&]                                                                                             history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]
 (( expression ))                                                                                         if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi
 . filename [arguments]                                                                                   jobs [-lnprs] [jobspec ...] or jobs -x command [args]
 :                                                                                                        kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
...
 export [-fn] [name[=value] ...] or export -p                                                             typeset [-aAfFgilrtux] [-p] name[=value] ...
 false                                                                                                    ulimit [-SHacdefilmnpqrstuvx] [limit]
 fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]                                         umask [-p] [-S] [mode]
 fg [job_spec]                                                                                            unalias [-a] name [name ...]
 for NAME [in WORDS ... ] ; do COMMANDS; done                                                             unset [-f] [-v] [name ...]
 for (( exp1; exp2; exp3 )); do COMMANDS; done                                                            until COMMANDS; do COMMANDS; done
 function name { COMMANDS ; } or name () { COMMANDS ; }                                                   variables - Names and meanings of some shell variables
 getopts optstring name [arg]                                                                             wait [id]
 hash [-lr] [-p pathname] [-dt] [name ...]                                                                while COMMANDS; do COMMANDS; done
 help [-dms] [pattern ...]                                                                                { COMMANDS ; }
13:02:32
#help emacs
l3script: help: no help topics match `emacs'.  Try `help help' or `man -k emacs' or `info emacs'.
13:02:37
#help set
set: set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
    Set or unset values of shell options and positional parameters.
    Change the value of shell attributes and positional parameters, or
    display the names and values of shell variables.
    Options:
      -a  Mark variables which are modified or created for export.
      -b  Notify of job termination immediately.
      -e  Exit immediately if a command exits with a non-zero status.
      -f  Disable file name generation (globbing).
      -h  Remember the location of commands as they are looked up.
...
          are unset.
      -   Assign any remaining arguments to the positional parameters.
          The -x and -v options are turned off.
    Using + rather than - causes these flags to be turned off.  The
    flags can also be used upon invocation of the shell.  The current
    set of flags may be found in $-.  The remaining n ARGs are positional
    parameters and are assigned, in order, to $1, $2, .. $n.  If no
    ARGs are given, all shell variables are printed.
    Exit Status:
    Returns success unless an invalid option is given.
13:02:40
#help set | grep emacs
              emacs        use an emacs-style line editing interface
13:02:46
#help set | grep vim

13:02:49
#help env
l3script: help: no help topics match `env'.  Try `help help' or `man -k env' or `info env'.
13:03:01
#env --help
Использование: env [КÐ-] [ИМЯ=ЗНАЧЕНИЕ]… [КОМАНДА [АРГ]…]
Присваивает каждому ИМЕНИ соответствующее ЗНАЧЕНИЕ и запускает КОМАНДУ в этом
окружении.
  -i, --ignore-environment   начать с пустым окружением
  -0, --null                 завершать каждую выводимую строку 0-м байтом,
                             a не символом новой строки
  -u, --unset=ИМЯ            удалить переменную с ИМЕНЕМ из окружения
      --help     показать эту справку и выйти
      --version  показать информацию о версии и выйти
Просто «-» -- синоним для «-i». Если не задана КОМАНДА, печатает получившееся
окружение.
Об ошибках в env сообщайте по адресу bug-coreutils@gnu.org.
Домашняя страница GNU coreutils: <http://www.gnu.org/software/coreutils/>
Справка по работе с программами GNU: <http://www.gnu.org/gethelp/>
Об ошибках в переводе сообщений «env» сообщайте по адресу <gnu@mx.ru>
Полная документация доступна по команде: info coreutils 'env invocation'
13:03:09
#env
SHELL=/bin/bash
TERM=xterm
HISTSIZE=2000
SSH_CLIENT=192.168.16.187 49228 22
L3_PARENT_TTY=/dev/pts/0
OLDPWD=/home
L3_TAMPERED_EDITORS= vi vim pico nano
SSH_TTY=/dev/pts/0
USER=root
HISTFILESIZE=2000
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAIL=/var/mail/root
L3_SESSION_ID=31383263589649259-1490769712
a=1
PWD=/home/user
LANG=ru_RU.UTF-8
13:04:27
#env
SHELL=/bin/bash
TERM=xterm
HISTSIZE=2000
SSH_CLIENT=192.168.16.187 49228 22
L3_PARENT_TTY=/dev/pts/0
OLDPWD=/home
L3_TAMPERED_EDITORS= vi vim pico nano
SSH_TTY=/dev/pts/0
USER=root
HISTFILESIZE=2000
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAIL=/var/mail/root
L3_SESSION_ID=31383263589649259-1490769712
a=1
PWD=/home/user
LANG=ru_RU.UTF-8
13:05:01
#export
declare -x HISTFILESIZE="2000"
declare -x HISTSIZE="2000"
declare -x HOME="/root"
declare -x L3_HOME="/root/.lilalo/"
declare -x L3_PARENT_TTY="/dev/pts/0"
declare -x L3_SESSION_ID="31383263589649259-1490769712"
declare -x L3_TAMPERED_EDITORS=" vi vim pico nano"
declare -x LANG="ru_RU.UTF-8"
declare -x LANGUAGE="ru_UA:ru"
declare -x LOGNAME="root"
declare -x MAIL="/var/mail/root"
declare -x OLDPWD="/home"
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
13:05:18
#export
declare -x HISTFILESIZE="2000"
declare -x HISTSIZE="2000"
declare -x HOME="/root"
declare -x L3_HOME="/root/.lilalo/"
declare -x L3_PARENT_TTY="/dev/pts/0"
declare -x L3_SESSION_ID="31383263589649259-1490769712"
declare -x L3_TAMPERED_EDITORS=" vi vim pico nano"
declare -x LANG="ru_RU.UTF-8"
declare -x LANGUAGE="ru_UA:ru"
declare -x LOGNAME="root"
declare -x MAIL="/var/mail/root"
declare -x OLDPWD="/home"
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
13:05:35
#env
SHELL=/bin/bash
TERM=xterm
HISTSIZE=2000
SSH_CLIENT=192.168.16.187 49228 22
L3_PARENT_TTY=/dev/pts/0
OLDPWD=/home
L3_TAMPERED_EDITORS= vi vim pico nano
SSH_TTY=/dev/pts/0
USER=root
HISTFILESIZE=2000
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAIL=/var/mail/root
L3_SESSION_ID=31383263589649259-1490769712
a=1
PWD=/home/user
LANG=ru_RU.UTF-8
13:05:47
#help export
export: export [-fn] [name[=value] ...] or export -p
    Set export attribute for shell variables.
    Marks each NAME for automatic export to the environment of subsequently
    executed commands.  If VALUE is supplied, assign VALUE before exporting.
    Options:
      -f        refer to shell functions
      -n        remove the export property from each NAME
      -p        display a list of all exported variables and functions
    An argument of `--' disables further option processing.
    Exit Status:
    Returns success unless an invalid option is given or NAME is invalid.
13:05:55
#export -p
declare -x HISTFILESIZE="2000"
declare -x HISTSIZE="2000"
declare -x HOME="/root"
declare -x L3_HOME="/root/.lilalo/"
declare -x L3_PARENT_TTY="/dev/pts/0"
declare -x L3_SESSION_ID="31383263589649259-1490769712"
declare -x L3_TAMPERED_EDITORS=" vi vim pico nano"
declare -x LANG="ru_RU.UTF-8"
declare -x LANGUAGE="ru_UA:ru"
declare -x LOGNAME="root"
declare -x MAIL="/var/mail/root"
declare -x OLDPWD="/home"
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
13:06:04
#echo $Ps1

13:14:32
#echo $Ps1

13:14:34
#echo $PS1

13:14:37
#mkdir scripts

13:16:50
#cd scripts/

13:16:53
#vi shell.sh
--- /dev/null	2017-03-27 13:30:21.879999998 +0300
+++ shell.sh	2017-03-29 14:24:05.343932263 +0300
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+users=`awk -F: '$3>=1000&&$3==65534{print $1}' | tr "\n" " "`
+echo $users
13:24:05
#chmod u+x shell.sh

13:24:19
#pwd
/home/user/scripts
13:24:56
#/home/user/scripts/shell.sh
^C
13:28:57
#./shell.sh
nobody
13:28:59
#vi shell.sh
--- /tmp/l3-saved-14496.7784.20248	2017-03-29 14:29:14.703920862 +0300
+++ shell.sh	2017-03-29 14:32:01.007924913 +0300
@@ -1,4 +1,4 @@
 #!/bin/bash
 
-users=`awk -F: '$3>=1000&&$3==65534{print $1}' /etc/passwd | tr "\n" " "`
+users=`awk -F: '$3>=1000&&$3!=65534{print $1}' /etc/passwd | tr "\n" " "`
 echo $users
13:32:01
#vi shell.sh
13:32:16
#vim .vimrc
--- /dev/null	2017-03-27 13:30:21.879999998 +0300
+++ .vimrc	2017-03-29 14:32:49.463918874 +0300
@@ -0,0 +1,2 @@
+set syntax=on
+set nnoremap <F7> :!%:p<Enter>
13:32:49
#vim .vimrc
13:32:55
#~
#!/bin/bash
users=`awk -F: '$3>=1000&&$3!=65534{print $1}' /etc/passwd | tr "\n" " "`
echo $users
"shell.sh" 4L, 99C
13:33:08
#~
shell.sh
13:33:09
#ls -lah
итого 16K
drwxr-xr-x  2 root root 4,0K Мар 29 14:33 .
drwxr-xr-x 17 user user 4,0K Мар 29 14:16 ..
-rwxr--r--  1 root root   99 Мар 29 14:32 shell.sh
-rw-r--r--  1 root root   45 Мар 29 14:32 .vimrc
13:33:11
#useradd -m anna

13:33:23
#./shell.sh
user ivan petr anna
13:33:40
#mv .vimrc .vim/
mv: невозможно переместить «.vimrc» в «.vim/»: Это не каталог
13:33:47
#mkdir .vim

13:33:51
#mv .vimrc .vim/

13:33:53
#vi shell.sh
--- /tmp/l3-saved-14496.1453.12166	2017-03-29 14:34:05.587924339 +0300
+++ shell.sh	2017-03-29 14:37:06.167924167 +0300
@@ -1,4 +1,8 @@
 #!/bin/bash
 
 users=`awk -F: '$3>=1000&&$3!=65534{print $1}' /etc/passwd | tr "\n" " "`
-echo $users
+for user in $users
+	do
+		echo "Changing shell for user $user"
+		usermod -s /bin/sh $user
+	done
13:38:24
#finger
Login     Name       Tty      Idle  Login Time   Office     Office Phone
root      root       pts/0          Mar 29 09:41 (192.168.16.187)
user      user      *pts/1          Mar 29 10:54
13:38:43
#finger ivan
Login: ivan                             Name:
Directory: /home/ivan                   Shell: /bin/sh
Last login Wed Mar 29 12:03 (EEST) on pts/2 from 192.168.16.187
No mail.
No Plan.
13:38:46
#vim shell.sh
--- /tmp/l3-saved-14496.14870.31602	2017-03-29 14:39:09.743919961 +0300
+++ shell.sh	2017-03-29 14:44:54.791925507 +0300
@@ -4,5 +4,5 @@
 for user in $users
 	do
 		echo "Changing shell for user $user"
-		usermod -s /bin/sh $user
+		usermod -s /bin/${1:-bash} $user
 	done
13:45:14
#cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
...
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
Debian-exim:x:101:103::/var/spool/exim4:/bin/false
user:x:1000:1000:user,,,:/home/user:/bin/bash
sshd:x:102:65534::/var/run/sshd:/usr/sbin/nologin
ivan:x:1001:1001::/home/ivan:/bin/bash
petr:x:1002:1002::/home/petr:/bin/bash
anna:x:1003:1003::/home/anna:/bin/bash
13:45:18
#vim shell.sh
13:50:55
#~

13:51:04
#echo test 5 -eq 5
test 5 -eq 5
13:51:08
#echo $?
0
13:51:18
#man test
13:53:06
#Invalid pattern (press RETURN)
#!/bin/bash
users=` do -F: '$3>=1000&&$3!=65534{print $1}' /etc/passwd | tr "\n" " "`
                echo "Changing shell for user $user"
for user in $us usermod -s /bin/${1:-bash} $user
        done
"shell.sh" 8L, 190C
13:56:03
# exit 2
./shell.sh: line 4: syntax error near unexpected token `fi'
./shell.sh: line 4: `fi'
13:56:28
#vim shell.sh
13:57:46
#~
Нет справочной страницы для if
13:57:48
#help if
if: if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi
    Execute commands based on conditional.
    The `if COMMANDS' list is executed.  If its exit status is zero, then the
    `then COMMANDS' list is executed.  Otherwise, each `elif COMMANDS' list is
    executed in turn, and if its exit status is zero, the corresponding
    `then COMMANDS' list is executed and the if command completes.  Otherwise,
    the `else COMMANDS' list is executed, if present.  The exit status of the
    entire construct is the exit status of the last command executed, or zero
    if no condition tested true.
    Exit Status:
    Returns the status of the last command executed.
13:57:55
#vim shell.sh
13:58:17
#~
#!/bin/bash
if [ $# exit 2]
fi
users=` do -F: '$3>=1000&&$3!=65534{print $1}' /etc/passwd | tr "\n" " "`
                echo "Changing shell for user $user"
for user in $us usermod -s /bin/${1:-bash} $user
        done
"shell.sh" 10L, 216C
13:58:38
#~
./shell.sh: line 4: syntax error near unexpected token `fi'
./shell.sh: line 4: `fi'
13:58:41
#vim shell.sh
13:58:59
#~
l3script: typespeed: команда не найдена
13:59:04
#lsblk
NAME    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
xvda    202:0    0    16G  0 disk
└─xvda1 202:1    0  15,3G  0 part /
sr0      11:0    1   222M  0 rom
xvdb    202:16   0     5G  0 disk
13:59:06
#htop

13:59:08
# Mem[|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||118/495MB] Load average: 0.08 0.03 0.05

13:59:10
#~
root@192.168.13.6's password:
#!/bin/bash
if [ $# -gt 1 ]
    then
        exit 2
    fi
users=`awk -F: '$3>=1000&&$3!=65534{print $1}' /etc/passwd | tr "\n" " "`
for user in $users
    do
        echo "Changing shell for user $user..."
        usermod -s /bin/${1:-bash} $user
    done

Файлы

  • /etc/passwd
  • /etc/passwd
    >
    root:x:0:0:root:/root:/bin/bash
    daemon:x:1:1:daemon:/usr/sbin:/bin/sh
    bin:x:2:2:bin:/bin:/bin/sh
    sys:x:3:3:sys:/dev:/bin/sh
    sync:x:4:65534:sync:/bin:/bin/sync
    games:x:5:60:games:/usr/games:/bin/sh
    man:x:6:12:man:/var/cache/man:/bin/sh
    lp:x:7:7:lp:/var/spool/lpd:/bin/sh
    mail:x:8:8:mail:/var/mail:/bin/sh
    news:x:9:9:news:/var/spool/news:/bin/sh
    uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
    proxy:x:13:13:proxy:/bin:/bin/sh
    www-data:x:33:33:www-data:/var/www:/bin/sh
    backup:x:34:34:backup:/var/backups:/bin/sh
    list:x:38:38:Mailing List Manager:/var/list:/bin/sh
    irc:x:39:39:ircd:/var/run/ircd:/bin/sh
    gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
    nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
    libuuid:x:100:101::/var/lib/libuuid:/bin/sh
    Debian-exim:x:101:103::/var/spool/exim4:/bin/false
    user:x:1000:1000:user,,,:/home/user:/bin/bash
    sshd:x:102:65534::/var/run/sshd:/usr/sbin/nologin
    ivan:x:1001:1001::/home/ivan:/bin/bash
    petr:x:1002:1002::/home/petr:/bin/bash
    anna:x:1003:1003::/home/anna:/bin/bash
    

    Статистика

    Время первой команды журнала11:49:06 2017- 3-29
    Время последней команды журнала13:59:10 2017- 3-29
    Количество командных строк в журнале101
    Процент команд с ненулевым кодом завершения, %12.87
    Процент синтаксически неверно набранных команд, % 0.99
    Суммарное время работы с терминалом *, час 1.33
    Количество командных строк в единицу времени, команда/мин 1.26
    Частота использования команд
    find17|==============| 14.05%
    help9|=======| 7.44%
    ~8|======| 6.61%
    echo7|=====| 5.79%
    ls7|=====| 5.79%
    vim7|=====| 5.79%
    \.tgz6|====| 4.96%
    env6|====| 4.96%
    \.rmp)'6|====| 4.96%
    man5|====| 4.13%
    \.gz5|====| 4.13%
    export5|====| 4.13%
    vi4|===| 3.31%
    pwd3|==| 2.48%
    shell.sh3|==| 2.48%
    mkdir2|=| 1.65%
    mv2|=| 1.65%
    finger2|=| 1.65%
    bash2|=| 1.65%
    grep2|=| 1.65%
    chmod1|| 0.83%
    Mem[1|| 0.83%
    useradd1|| 0.83%
    cd1|| 0.83%
    set1|| 0.83%
    cat1|| 0.83%
    a=11|| 0.83%
    495MB]1|| 0.83%
    Invalid1|| 0.83%
    htop1|| 0.83%
    exit1|| 0.83%
    lsblk1|| 0.83%
    pstree1|| 0.83%
    ____
    *) Интервалы неактивности длительностью 30 минут и более не учитываются

    Справка

    Для того чтобы использовать LiLaLo, не нужно знать ничего особенного: всё происходит само собой. Однако, чтобы ведение и последующее использование журналов было как можно более эффективным, желательно иметь в виду следующее:
    1. В журнал автоматически попадают все команды, данные в любом терминале системы.

    2. Для того чтобы убедиться, что журнал на текущем терминале ведётся, и команды записываются, дайте команду w. В поле WHAT, соответствующем текущему терминалу, должна быть указана программа script.

    3. Команды, при наборе которых были допущены синтаксические ошибки, выводятся перечёркнутым текстом:
      $ l s-l
      bash: l: command not found
      

    4. Если код завершения команды равен нулю, команда была выполнена без ошибок. Команды, код завершения которых отличен от нуля, выделяются цветом.
      $ test 5 -lt 4
      Обратите внимание на то, что код завершения команды может быть отличен от нуля не только в тех случаях, когда команда была выполнена с ошибкой. Многие команды используют код завершения, например, для того чтобы показать результаты проверки

    5. Команды, ход выполнения которых был прерван пользователем, выделяются цветом.
      $ find / -name abc
      find: /home/devi-orig/.gnome2: Keine Berechtigung
      find: /home/devi-orig/.gnome2_private: Keine Berechtigung
      find: /home/devi-orig/.nautilus/metafiles: Keine Berechtigung
      find: /home/devi-orig/.metacity: Keine Berechtigung
      find: /home/devi-orig/.inkscape: Keine Berechtigung
      ^C
      

    6. Команды, выполненные с привилегиями суперпользователя, выделяются слева красной чертой.
      # id
      uid=0(root) gid=0(root) Gruppen=0(root)
      

    7. Изменения, внесённые в текстовый файл с помощью редактора, запоминаются и показываются в журнале в формате ed. Строки, начинающиеся символом "<", удалены, а строки, начинающиеся символом ">" -- добавлены.
      $ vi ~/.bashrc
      2a3,5
      >    if [ -f /usr/local/etc/bash_completion ]; then
      >         . /usr/local/etc/bash_completion
      >        fi
      

    8. Для того чтобы изменить файл в соответствии с показанными в диффшоте изменениями, можно воспользоваться командой patch. Нужно скопировать изменения, запустить программу patch, указав в качестве её аргумента файл, к которому применяются изменения, и всавить скопированный текст:
      $ patch ~/.bashrc
      В данном случае изменения применяются к файлу ~/.bashrc

    9. Для того чтобы получить краткую справочную информацию о команде, нужно подвести к ней мышь. Во всплывающей подсказке появится краткое описание команды.

      Если справочная информация о команде есть, команда выделяется голубым фоном, например: vi. Если справочная информация отсутствует, команда выделяется розовым фоном, например: notepad.exe. Справочная информация может отсутствовать в том случае, если (1) команда введена неверно; (2) если распознавание команды LiLaLo выполнено неверно; (3) если информация о команде неизвестна LiLaLo. Последнее возможно для редких команд.

    10. Большие, в особенности многострочные, всплывающие подсказки лучше всего показываются браузерами KDE Konqueror, Apple Safari и Microsoft Internet Explorer. В браузерах Mozilla и Firefox они отображаются не полностью, а вместо перевода строки выводится специальный символ.

    11. Время ввода команды, показанное в журнале, соответствует времени начала ввода командной строки, которое равно тому моменту, когда на терминале появилось приглашение интерпретатора

    12. Имя терминала, на котором была введена команда, показано в специальном блоке. Этот блок показывается только в том случае, если терминал текущей команды отличается от терминала предыдущей.

    13. Вывод не интересующих вас в настоящий момент элементов журнала, таких как время, имя терминала и других, можно отключить. Для этого нужно воспользоваться формой управления журналом вверху страницы.

    14. Небольшие комментарии к командам можно вставлять прямо из командной строки. Комментарий вводится прямо в командную строку, после символов #^ или #v. Символы ^ и v показывают направление выбора команды, к которой относится комментарий: ^ - к предыдущей, v - к следующей. Например, если в командной строке было введено:

      $ whoami
      
      user
      
      $ #^ Интересно, кто я?
      
      в журнале это будет выглядеть так:
      $ whoami
      
      user
      
      Интересно, кто я?

    15. Если комментарий содержит несколько строк, его можно вставить в журнал следующим образом:

      $ whoami
      
      user
      
      $ cat > /dev/null #^ Интересно, кто я?
      
      Программа whoami выводит имя пользователя, под которым 
      мы зарегистрировались в системе.
      -
      Она не может ответить на вопрос о нашем назначении 
      в этом мире.
      
      В журнале это будет выглядеть так:
      $ whoami
      user
      
      Интересно, кто я?
      Программа whoami выводит имя пользователя, под которым
      мы зарегистрировались в системе.

      Она не может ответить на вопрос о нашем назначении
      в этом мире.
      Для разделения нескольких абзацев между собой используйте символ "-", один в строке.

    16. Комментарии, не относящиеся непосредственно ни к какой из команд, добавляются точно таким же способом, только вместо симолов #^ или #v нужно использовать символы #=

    17. Содержимое файла может быть показано в журнале. Для этого его нужно вывести с помощью программы cat. Если вывод команды отметить симоволами #!, содержимое файла будет показано в журнале в специально отведённой для этого секции.
    18. Для того чтобы вставить скриншот интересующего вас окна в журнал, нужно воспользоваться командой l3shot. После того как команда вызвана, нужно с помощью мыши выбрать окно, которое должно быть в журнале.
    19. Команды в журнале расположены в хронологическом порядке. Если две команды давались одна за другой, но на разных терминалах, в журнале они будут рядом, даже если они не имеют друг к другу никакого отношения.
      1
          2
      3   
          4
      
      Группы команд, выполненных на разных терминалах, разделяются специальной линией. Под этой линией в правом углу показано имя терминала, на котором выполнялись команды. Для того чтобы посмотреть команды только одного сенса, нужно щёкнуть по этому названию.

    О программе

    LiLaLo (L3) расшифровывается как Live Lab Log.
    Программа разработана для повышения эффективности обучения Unix/Linux-системам.
    (c) Игорь Чубин, 2004-2008

    $Id$