/l3/users/slm/2018-12-minsk-aws/student01.BigClassRoom/user :1 :2 :3 |
|
$ls -a
. .bash_logout Desktop .l3rc Music .sawsrc .. .bash_profile Documents .lilalo Pictures .saws.shortcuts aws .bashrc Downloads .local .profile .ssh .aws .cache github.txt log_cons.txt Public Templates aws2 .config .gnupg m0_id_rsa.pub .saws-history Videos .bash_history create-infra_copy.sh .ICEauthority .mozilla .saws.log .viminfo |
$sudo vim create-infra.sh
|
$~
cp: cannot create regular file '/home/user/.aws2/': Not a directory |
$sudo cp log_cons.txt ~/aws2
|
$ls
hello2.md hello.md log_cons.txt README.md scripts |
$cd scripts/
|
$ls
create-infra.sh |
$bash ./create-infra.sh start
Error parsing parameter '--tag-specifications': Expected: '=', received: 'EOF' for input: ^ Error parsing parameter '--tag-specifications': Expected: '=', received: 'EOF' for input: ^ Error parsing parameter '--tag-specifications': Expected: '=', received: 'EOF' for input: ^ Error parsing parameter '--tag-specifications': Expected: '=', received: 'EOF' for input: ^ Error parsing parameter '--tag-specifications': Expected: '=', received: 'EOF' for input: ^ |
$ftp
bash: ftp: command not found |
$sudo apt-get install ftp
Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: ftp 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 58.7 kB of archives. After this operation, 135 kB of additional disk space will be used. Get:1 http://ftp.by.debian.org/debian stretch/main amd64 ftp amd64 0.17-34 [58.7 kB] Fetched 58.7 kB in 0s (499 kB/s) Selecting previously unselected package ftp. (Reading database ... 137697 files and directories currently installed.) Preparing to unpack .../archives/ftp_0.17-34_amd64.deb ... Unpacking ftp (0.17-34) ... Setting up ftp (0.17-34) ... update-alternatives: using /usr/bin/netkit-ftp to provide /usr/bin/ftp (ftp) in auto mode Processing triggers for man-db (2.7.6.1-2) ... |
$ssh ec2-34-244-194-50.eu-west-1.compute.amazonaws.com
The authenticity of host 'ec2-34-244-194-50.eu-west-1.compute.amazonaws.com (34.244.194.50)' can't be established. ECDSA key fingerprint is SHA256:k1Fu+rOFKMD2htzuwsjuuADsIJfOOadIjcYAP33sKB4. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'ec2-34-244-194-50.eu-west-1.compute.amazonaws.com,34.244.194.50' (ECDSA) to the list of known hosts. __| __|_ ) _| ( / Amazon Linux 2 AMI ___|\___|___| https://aws.amazon.com/amazon-linux-2/ 15 package(s) needed for security, out of 16 available Run "sudo yum update" to apply all updates. [ec2-user@ip-10-1-1-111 ~]$ [ec2-user@ip-10-1-1-111 ~]$ [ec2-user@ip-10-1-1-111 ~]$ [ec2-user@ip-10-1-1-111 ~]$ exit logout Connection to ec2-34-244-194-50.eu-west-1.compute.amazonaws.com closed. |
$ssh admin@ec2-34-244-194-50.eu-west-1.compute.amazonaws.com
Permission denied (publickey,gssapi-keyex,gssapi-with-mic). |
$admin@ec2-34-244-194-50.eu-west-1.compute.amazonaws.com
bash: admin@ec2-34-244-194-50.eu-west-1.compute.amazonaws.com: command not found |
$ftp
ftp> open 130.193.48.71 Connected to 130.193.48.71. 220 Microsoft FTP Service Name (130.193.48.71:user): ftpuser 331 Password required Password: 230-Directory has 18,021,261,312 bytes of disk space available. 230 User logged in. Remote system type is Windows_NT. ftp> put /home/user/log-cons.txt local: /home/user/log-cons.txt remote: /home/user/log-cons.txt local: /home/user/log-cons.txt: No such file or directory ftp> put /home/user/log-cons.txt local: /home/user/log-cons.txt remote: /home/user/log-cons.txt local: /home/user/log-cons.txt: No such file or directory ftp> exit 421 Service not available, remote server has closed connection |
$cd /home/user
|
$ls
aws Desktop log_cons.txt Public aws2 Documents m0_id_rsa.pub Templates create-infra_copy2.sh Downloads Music Videos create-infra_copy.sh github.txt Pictures |
$cd ..
|
$cd ..
|
$cd aws
|
$ls
create-infrastructure.sh qrencode.conf install-qrencode.sh |
$git status
On branch master Initial commit Untracked files: (use "git add <file>..." to include in what will be committed) create-infrastructure.sh install-qrencode.sh qrencode.conf nothing added to commit but untracked files present (use "git add" to track) |
$git add
fatal: Unable to create '/home/user/aws/.git/index.lock': Permission denied |
$sudo git add
[sudo] password for user: Nothing specified, nothing added. Maybe you wanted to say 'git add .'? |
$mkdir config
mkdir: cannot create directory ‘config’: Permission denied |
$sudo mkdir config
|
$sudo mkdir scripts
|
$sudo mv qrencode.conf config/
|
$sudo mv *.sh scripts/
|
$ls
config scripts |
$sudo git add scripts/
|
$sudo status
sudo: status: command not found |
$sudo git status
On branch master Initial commit Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: config/qrencode.conf new file: scripts/create-infrastructure.sh new file: scripts/install-qrencode.sh |
$sudo git commit 'add conf' config/
error: pathspec 'add conf' did not match any file(s) known to git. |
$sudo git commit -m 'add conf' config/
[master (root-commit) 3fef16c] add conf 1 file changed, 28 insertions(+) create mode 100644 config/qrencode.conf |
$onfig/
|
$conf' config/
status On branch master Your branch is based on 'origin/master', but the upstream is gone. (use "git branch --unset-upstream" to fixup) nothing to commit, working tree clean |
$sudo git diff
|
$sudo git status
On branch master Your branch is based on 'origin/master', but the upstream is gone. (use "git branch --unset-upstream" to fixup) nothing to commit, working tree clean |
$sudo git push
Username for 'https://github.com': kfilonov Password for 'https://kfilonov@github.com': To https://github.com/kfilonov/aws ! [rejected] master -> master (fetch first) error: failed to push some refs to 'https://github.com/kfilonov/aws' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. |
$sudo git pull
warning: no common commits remote: Enumerating objects: 6, done. remote: Counting objects: 100% (6/6), done. remote: Compressing objects: 100% (3/3), done. remote: Total 6 (delta 0), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (6/6), done. From https://github.com/kfilonov/aws * [new branch] master -> origin/master fatal: refusing to merge unrelated histories |
$sudo git status
On branch master Your branch and 'origin/master' have diverged, and have 2 and 2 different commits each, respectively. (use "git pull" to merge the remote branch into yours) nothing to commit, working tree clean |
$sudo git push
Username for 'https://github.com': kfilonov Password for 'https://kfilonov@github.com': To https://github.com/kfilonov/aws ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to 'https://github.com/kfilonov/aws' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. |
$cp config/ /aws2/
cp: -r not specified; omitting directory 'config/' |
$cp config/ /aws2
cp: -r not specified; omitting directory 'config/' |
$cp config/ aws2
cp: -r not specified; omitting directory 'config/' |
$cp config aws2
cp: -r not specified; omitting directory 'config' |
$ls
config scripts |
$cp /config /aws2
cp: cannot stat '/config': No such file or directory |
$cp config/ /aws2
cp: -r not specified; omitting directory 'config/' |
$cp config aws2/
cp: -r not specified; omitting directory 'config' |
$cp config/ ~/home/user/aws2/
cp: -r not specified; omitting directory 'config/' |
$cp config ~/home/user/aws2/
cp: -r not specified; omitting directory 'config' |
$ls
config scripts |
$sudo cp config ~/home/user/aws2/
cp: -r not specified; omitting directory 'config' |
$sudo cp config/ ~/home/user/aws2/
cp: -r not specified; omitting directory 'config/' |
$sudo cp -r config/ ~/home/user/aws2/
cp: cannot create directory '/home/user/home/user/aws2/': No such file or directory |
$sudo cp -r config ~/home/user/aws2/
cp: cannot create directory '/home/user/home/user/aws2/': No such file or directory |
$sudo cp -r config /aws2
|
$sudo cp -r config/ ~/aws2/
|
$sudo cp -r scripts/ ~/aws2/
|
$conf' config/
On branch master Your branch and 'origin/master' have diverged, and have 2 and 2 different commits each, respectively. (use "git pull" to merge the remote branch into yours) nothing to commit, working tree clean |
$conf' config/
/ scripts' scripts/ On branch master Your branch and 'origin/master' have diverged, and have 2 and 2 different commits each, respectively. (use "git pull" to merge the remote branch into yours) nothing to commit, working tree clean |
$sudo git push
Username for 'https://github.com': kfilonov Password for 'https://kfilonov@github.com': To https://github.com/kfilonov/aws ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to 'https://github.com/kfilonov/aws' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. |
$conf' config/
cd |
$cd aws2
|
$conf' config/
status On branch master Your branch is up-to-date with 'origin/master'. Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: scripts/create-infra.sh Untracked files: (use "git add <file>..." to include in what will be committed) config/ log_cons.txt scripts/create-infrastructure.sh scripts/install-qrencode.sh no changes added to commit (use "git add" and/or "git commit -a") |
$sudo git add
Nothing specified, nothing added. Maybe you wanted to say 'git add .'? |
$sudo git add config/
|
$sudo git add scripts/
|
$sudo git status
On branch master Your branch is up-to-date with 'origin/master'. Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: config/qrencode.conf modified: scripts/create-infra.sh new file: scripts/create-infrastructure.sh new file: scripts/install-qrencode.sh Untracked files: (use "git add <file>..." to include in what will be committed) log_cons.txt |
$sudo git add log_cons.txt
|
$sudo git status
On branch master Your branch is up-to-date with 'origin/master'. Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: config/qrencode.conf new file: log_cons.txt modified: scripts/create-infra.sh new file: scripts/create-infrastructure.sh new file: scripts/install-qrencode.sh |
$sudo git diff
|
$sudo git push
Username for 'https://github.com': kfilonov Password for 'https://kfilonov@github.com': remote: Invalid username or password. fatal: Authentication failed for 'https://github.com/kfilonov/aws2/' |
$sudo git push
Username for 'https://github.com': kfilonov Password for 'https://kfilonov@github.com': Everything up-to-date |
$sudo git status
On branch master Your branch is up-to-date with 'origin/master'. Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: config/qrencode.conf new file: log_cons.txt modified: scripts/create-infra.sh new file: scripts/create-infrastructure.sh new file: scripts/install-qrencode.sh |
$sudo git status
[sudo] password for user: On branch master Your branch is up-to-date with 'origin/master'. Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: config/qrencode.conf new file: log_cons.txt modified: scripts/create-infra.sh new file: scripts/create-infrastructure.sh new file: scripts/install-qrencode.sh |
$sudo git push
Username for 'https://github.com': kfilonov Password for 'https://kfilonov@github.com': Everything up-to-date |
$git status
On branch master Your branch is up-to-date with 'origin/master'. Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: config/qrencode.conf new file: log_cons.txt modified: scripts/create-infra.sh new file: scripts/create-infrastructure.sh new file: scripts/install-qrencode.sh |
$pull
|
$pull
sudo chown -R user:user . |
$sudo cp -R /root/.git ~/
cp: cannot stat '/root/.git': No such file or directory |
$sudo cp -R /root/.gitrc ~/
cp: cannot stat '/root/.gitrc': No such file or directory |
$sudo -s
root@m1:/home/user/aws2# ls -al /root/ total 104 drwx------ 7 root root 4096 Dec 20 12:25 . drwxr-xr-x 24 root root 4096 Dec 20 15:12 .. -rw------- 1 root root 4234 Dec 18 12:53 .bash_history -rw-r--r-- 1 root root 42 Dec 16 14:09 .bash_profile -rw-r--r-- 1 root root 616 Dec 16 14:25 .bashrc drwx------ 3 root root 4096 Dec 19 14:23 .cache -rw-r--r-- 1 root root 82 Dec 16 14:41 credentials.csv -rw-r--r-- 1 root root 52 Dec 17 16:14 .gitconfig ... drwxr-xr-x 2 root root 4096 Dec 18 17:06 .lilalo -rw-r--r-- 1 root root 5295 Dec 16 14:22 lilalo-install drwxr-xr-x 2 root root 4096 Dec 17 16:22 .nano -rw-r--r-- 1 root root 148 Aug 17 2015 .profile -rwxr-xr-x 1 root root 66 Dec 16 14:02 setpasswd drwxr-xr-x 2 root root 4096 Dec 16 14:00 .ssh drwxr-xr-x 2 root root 4096 Dec 16 13:35 .vim -rw------- 1 root root 17038 Dec 20 12:25 .viminfo root@m1:/home/user/aws2# exit exit |
$sudo cp -R /root/.gitconfig ~/
|
$git status
On branch master Your branch is ahead of 'origin/master' by 1 commit. (use "git push" to publish your local commits) Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: config/qrencode.conf modified: scripts/create-infra.sh new file: scripts/create-infrastructure.sh new file: scripts/install-qrencode.sh |
$git push
Username for 'https://github.com': kfilonov Password for 'https://kfilonov@github.com': Counting objects: 11, done. Delta compression using up to 2 threads. Compressing objects: 100% (10/10), done. Writing objects: 100% (11/11), 4.00 KiB | 0 bytes/s, done. Total 11 (delta 2), reused 0 (delta 0) remote: Resolving deltas: 100% (2/2), completed with 1 local object. To https://github.com/kfilonov/aws2 4d1c7e9..fbfa356 master -> master |
$sudo cp -R /root/.gitconfig ~/
|
$less log_cons.txt
|
$conf' config/
|
$conf' config/
bash ./create-infra.sh start compute.amazonaws.comadmin@ec2-63-33-217-op bash: ./create-infra.sh: No such file or directory |
$cd scripts/
|
$ls
create-infra.sh install-qrencode.sh create-infrastructure.sh |
$bash ./create-infra
create-infra.sh create-infrastructure.sh |
$ls
instance_id($(echo "${start_log}" | jq -r .Instances[[ 0].InstanceId) ) for i in {2..3}; do # start_vm 10.2.1.$((100+i)) no-associate-public-ipp -address ${USER_NAME}-vm$i > /dev/null # done # start_vm 10.2.1.$((100+i)) no-a29,11 44% dns_name=$(get_dns_name "$instance_id") echo $dns_name sleep 2 33,11 50% ... elif [ "$1" = stop ]; then stop else cat <<EOF Usage: $0 start|stop EOF exit 1 fi <re.sh" 84L, 1833C written |
$vim create-infrastructure.sh
|
$cd
|
Время первой команды журнала | 09:09:52 2018-12-20 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Время последней команды журнала | 14:06:38 2018-12-20 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Количество командных строк в журнале | 101 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Процент команд с ненулевым кодом завершения, % | 28.71 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Процент синтаксически неверно набранных команд, % | 2.97 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Суммарное время работы с терминалом *, час | 1.69 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Количество командных строк в единицу времени, команда/мин | 1.00 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Частота использования команд |
|
В журнал автоматически попадают все команды, данные в любом терминале системы.
Для того чтобы убедиться, что журнал на текущем терминале ведётся, и команды записываются, дайте команду w. В поле WHAT, соответствующем текущему терминалу, должна быть указана программа script.
Команды, при наборе которых были допущены синтаксические ошибки, выводятся перечёркнутым текстом:
$ l s-l bash: l: command not found |
Если код завершения команды равен нулю, команда была выполнена без ошибок. Команды, код завершения которых отличен от нуля, выделяются цветом.
$ test 5 -lt 4 |
Команды, ход выполнения которых был прерван пользователем, выделяются цветом.
$ 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 |
Команды, выполненные с привилегиями суперпользователя, выделяются слева красной чертой.
# id uid=0(root) gid=0(root) Gruppen=0(root) |
Изменения, внесённые в текстовый файл с помощью редактора, запоминаются и показываются в журнале в формате ed. Строки, начинающиеся символом "<", удалены, а строки, начинающиеся символом ">" -- добавлены.
$ vi ~/.bashrc
|
Для того чтобы изменить файл в соответствии с показанными в диффшоте изменениями, можно воспользоваться командой patch. Нужно скопировать изменения, запустить программу patch, указав в качестве её аргумента файл, к которому применяются изменения, и всавить скопированный текст:
$ patch ~/.bashrc |
Для того чтобы получить краткую справочную информацию о команде, нужно подвести к ней мышь. Во всплывающей подсказке появится краткое описание команды.
Если справочная информация о команде есть, команда выделяется голубым фоном, например: vi. Если справочная информация отсутствует, команда выделяется розовым фоном, например: notepad.exe. Справочная информация может отсутствовать в том случае, если (1) команда введена неверно; (2) если распознавание команды LiLaLo выполнено неверно; (3) если информация о команде неизвестна LiLaLo. Последнее возможно для редких команд.
Большие, в особенности многострочные, всплывающие подсказки лучше всего показываются браузерами KDE Konqueror, Apple Safari и Microsoft Internet Explorer. В браузерах Mozilla и Firefox они отображаются не полностью, а вместо перевода строки выводится специальный символ.
Время ввода команды, показанное в журнале, соответствует времени начала ввода командной строки, которое равно тому моменту, когда на терминале появилось приглашение интерпретатора
Имя терминала, на котором была введена команда, показано в специальном блоке. Этот блок показывается только в том случае, если терминал текущей команды отличается от терминала предыдущей.
Вывод не интересующих вас в настоящий момент элементов журнала, таких как время, имя терминала и других, можно отключить. Для этого нужно воспользоваться формой управления журналом вверху страницы.
Небольшие комментарии к командам можно вставлять прямо из командной строки. Комментарий вводится прямо в командную строку, после символов #^ или #v. Символы ^ и v показывают направление выбора команды, к которой относится комментарий: ^ - к предыдущей, v - к следующей. Например, если в командной строке было введено:
$ whoami
user
$ #^ Интересно, кто я?в журнале это будет выглядеть так:
$ whoami
user
Интересно, кто я? |
Если комментарий содержит несколько строк, его можно вставить в журнал следующим образом:
$ whoami
user
$ cat > /dev/null #^ Интересно, кто я?
Программа whoami выводит имя пользователя, под которым мы зарегистрировались в системе. - Она не может ответить на вопрос о нашем назначении в этом мире.В журнале это будет выглядеть так:
$ whoami user
|
Комментарии, не относящиеся непосредственно ни к какой из команд, добавляются точно таким же способом, только вместо симолов #^ или #v нужно использовать символы #=
1 2 3 4Группы команд, выполненных на разных терминалах, разделяются специальной линией. Под этой линией в правом углу показано имя терминала, на котором выполнялись команды. Для того чтобы посмотреть команды только одного сенса, нужно щёкнуть по этому названию.
LiLaLo (L3) расшифровывается как Live Lab Log.
Программа разработана для повышения эффективности обучения Unix/Linux-системам.
(c) Игорь Чубин, 2004-2008