/l3/users/slm/2018-12-minsk-aws/student04.BigClassRoom/user :1 :2 |
|
$aws configure
AWS Access Key ID [****************XQQQ]: AWS Secret Access Key [****************O5re]: Default region name [eu-west-1]: Default output format [json]: |
$aws configure
AWS Access Key ID [****************XQQQ]: AKIAIPTEFNENKAHEXQQQ AWS Secret Access Key [****************O5re]: Default region name [eu-west-1]: Default output format [json]: |
$sudo cat /root/credentials.csv | tr , '/n'
user4/}E-(C9rwuVY&/AKIAIPTEFNENKAHEXQQQ/tvhZorZukurIK+uoQbLEozH3xwkVk/1bJLqkO5re/https://chubin.signin.aws.amazon.com/console |
$sudo cat /root/credentials.csv | tr , '\n'
user4 }E-(C9rwuVY& AKIAIPTEFNENKAHEXQQQ tvhZorZukurIK+uoQbLEozH3xwkVk/1bJLqkO5re https://chubin.signin.aws.amazon.com/console |
$aws ec2 describe-instances
{ "Reservations": [ { "Groups": [], "ReservationId": "r-0ebb430cd3f1917cf", "OwnerId": "886677986286", "Instances": [ { "InstanceId": "i-080515adaa7956592", "AmiLaunchIndex": 0, ... "Placement": { "AvailabilityZone": "eu-west-1a", "GroupName": "", "Tenancy": "default" } } ] } ] } |
$aws ec2 describe-instances | jq
{ "Reservations": [ { "Groups": [], "OwnerId": "886677986286", "ReservationId": "r-0ebb430cd3f1917cf", "Instances": [ { "SourceDestCheck": true, "SecurityGroups": [ ... ], "PrivateDnsName": "ip-10-1-1-251.eu-west-1.compute.internal", "AmiLaunchIndex": 0, "RootDeviceType": "ebs", "SubnetId": "subnet-060d8c5c243f86664" } ] } ] } |
$aws ec2 describe-instances | jq[0]
bash: jq[0]: command not found |
$aws ec2 describe-instances | jq.[0]
bash: jq.[0]: command not found |
$history | grep jq
52 sudo apt install jq 54 cat 1.json | jq 57 cat 1.json | jq 58 cat 1.json | jq .[1].computer 59 cat 1.json | jq .[2].name 60 cat 1.json | jq .[1].name 61 cat 1.json | jq .[1] 62 cat 1.json | jq .[0].name 63 cat 1.json | jq .[0].computer 64 curl -s https://uinames.com/api/?region=belarus\&amount=5 | jq 65 curl -s https://uinames.com/api/?region=poland\&amount=5 | jq 66 curl -s https://uinames.com/api/?region=poland\&amount=5 | jq '.[] | .name + " " + .surname' 67 curl -s https://uinames.com/api/?region=poland\&amount=5 | jq '.[] | .name + " " + .surname' 246 aws ec2 describe-instances | jq 247 aws ec2 describe-instances | jq[0] 248* aws ec2 describe-instances | jq 249 history | grep jq |
$aws ec2 describe-instances | jq .[1]
jq: error (at <stdin>:1666): Cannot index object with number |
$aws ec2 describe-instances | jq
{ "Reservations": [ { "ReservationId": "r-0ebb430cd3f1917cf", "OwnerId": "886677986286", "Groups": [], "Instances": [ { "InstanceId": "i-080515adaa7956592", "RootDeviceName": "/dev/xvda", ... "DeleteOnTermination": true, "AttachTime": "2018-12-19T09:42:51.000Z" } } ] } ] } ] } |
$aws ec2 describe-instances | jq .Reservations
[ { "Groups": [], "Instances": [ { "Monitoring": { "State": "disabled" }, "State": { "Code": 16, ... "StateTransitionReason": "", "Architecture": "x86_64", "InstanceType": "t2.micro", "AmiLaunchIndex": 0 } ], "ReservationId": "r-0c0e59eec99ee07d6", "OwnerId": "886677986286" } ] |
$aws ec2 describe-instances | jq .Reservations | less -R
|
$aws ec2 describe-instances | jq .Reservations
[ { "ReservationId": "r-0ebb430cd3f1917cf", "OwnerId": "886677986286", "Instances": [ { "ProductCodes": [], "PublicDnsName": "ec2-52-19-122-40.eu-west-1.compute.amazonaws.com", "BlockDeviceMappings": [ { ... }, "Hypervisor": "xen", "SourceDestCheck": true, "Architecture": "x86_64", "KeyName": "user3" } ], "Groups": [] } ] |
$aws ec2 describe-instances --output table
------------------------------------------------------------------------------------- | DescribeInstances | +-----------------------------------------------------------------------------------+ || Reservations || |+---------------------------------+-----------------------------------------------+| || OwnerId | 886677986286 || || ReservationId | r-0ebb430cd3f1917cf || |+---------------------------------+-----------------------------------------------+| ||| Instances ||| ||+------------------------+------------------------------------------------------+|| ... |||| State |||| |||+-------------------------------+---------------------------------------------+||| |||| Code | 16 |||| |||| Name | running |||| |||+-------------------------------+---------------------------------------------+||| |||| Tags |||| |||+-----------------------------+-----------------------------------------------+||| |||| Key | Name |||| |||| Value | user3-noIP |||| |||+-----------------------------+-----------------------------------------------+||| |
$aws ec2 describe-instances --output list
usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters] To see help text, you can run: aws help aws <command> help aws <command> <subcommand> help aws: error: argument --output: Invalid choice, valid choices are: json | text table |
$aws ec2 describe-instances --output text
RESERVATIONS 886677986286 r-0ebb430cd3f1917cf INSTANCES 0 x86_64 False True xen ami-09693313102a30b2c i-080515adaa7956592 t2.micro user10 2018-12-19T09:56:26.000Z ip-10-2-1-85.eu-west-1.compute.internal 10.2.1.85 ec2-52-19-122-40.eu-west-1.compute.amazonaws.com 52.19.122.40 /dev/xvda ebs True subnet-0d00d8b5d01e66e35 hvm vpc-04540e242cdfb35de BLOCKDEVICEMAPPINGS /dev/xvda EBS 2018-12-19T09:56:13.000Z False attached vol-05a6d57a3a6c9ffa2 MONITORING disabled NETWORKINTERFACES Primary network interface 0a:a3:3d:87:83:46 eni-04bd6dd286a442369 886677986286 ip-10-2-1-85.eu-west-1.compute.internal 10.2.1.85 True in-use subnet-0d00d8b5d01e66e35 vpc-04540e242cdfb35de ASSOCIATION amazon ec2-52-19-122-40.eu-west-1.compute.amazonaws.com 52.19.122.40 ATTACHMENT 2018-12-19T07:27:59.000Z eni-attach-0ce1163c9a99e77a2 True 0 attached GROUPS sg-0703dcefff5dcf007 launch-wizard-5-1 PRIVATEIPADDRESSES True ip-10-2-1-85.eu-west-1.compute.internal 10.2.1.85 ... EBS 2018-12-19T09:42:51.000Z True attached vol-0e348ce463057e610 MONITORING disabled NETWORKINTERFACES Primary network interface 0a:1d:59:e6:36:62 eni-0a3b551b95295909d 886677986286 ip-10-1-1-251.eu-west-1.compute.internal 10.1.1.251 True in-use subnet-060d8c5c243f86664 vpc-08b950cd8140c7403 ATTACHMENT 2018-12-19T09:42:51.000Z eni-attach-008171fffb029232d True 0 attached GROUPS sg-0c6d9a080b0be281c launch-wizard-1 PRIVATEIPADDRESSES True ip-10-1-1-251.eu-west-1.compute.internal 10.1.1.251 PLACEMENT eu-west-1a default SECURITYGROUPS sg-0c6d9a080b0be281c launch-wizard-1 STATE 16 running TAGS Name user3-noIP |
$aws ec2 describe-instances --output table
------------------------------------------------------------------------------------- | DescribeInstances | +-----------------------------------------------------------------------------------+ || Reservations || |+---------------------------------+-----------------------------------------------+| || OwnerId | 886677986286 || || ReservationId | r-0ebb430cd3f1917cf || |+---------------------------------+-----------------------------------------------+| ||| Instances ||| ||+------------------------+------------------------------------------------------+|| ... |||| State |||| |||+-------------------------------+---------------------------------------------+||| |||| Code | 16 |||| |||| Name | running |||| |||+-------------------------------+---------------------------------------------+||| |||| Tags |||| |||+-----------------------------+-----------------------------------------------+||| |||| Key | Name |||| |||| Value | user3-noIP |||| |||+-----------------------------+-----------------------------------------------+||| |
$aws ec2 describe-instances | jq
{ "Reservations": [ { "ReservationId": "r-0ebb430cd3f1917cf", "Groups": [], "OwnerId": "886677986286", "Instances": [ { "StateTransitionReason": "", "SourceDestCheck": true, ... "Description": "Primary network interface", "VpcId": "vpc-08b950cd8140c7403" } ], "ClientToken": "" } ] } ] } |
$aws ec2 describe-instances | jq .Reservations[0]
{ "Instances": [ { "BlockDeviceMappings": [ { "DeviceName": "/dev/xvda", "Ebs": { "Status": "attached", "VolumeId": "vol-05a6d57a3a6c9ffa2", "DeleteOnTermination": false, ... "RootDeviceName": "/dev/xvda", "VirtualizationType": "hvm", "PublicIpAddress": "52.19.122.40", "Hypervisor": "xen" } ], "ReservationId": "r-0ebb430cd3f1917cf", "Groups": [], "OwnerId": "886677986286" } |
$aws ec2 describe-instances | jq .Reservations[0].Instances
[ { "VirtualizationType": "hvm", "LaunchTime": "2018-12-19T09:56:26.000Z", "Placement": { "GroupName": "", "AvailabilityZone": "eu-west-1a", "Tenancy": "default" }, "ClientToken": "", ... "DeleteOnTermination": false } } ], "VpcId": "vpc-04540e242cdfb35de", "Monitoring": { "State": "disabled" } } ] |
$aws ec2 describe-instances | jq .Reservations[0].Instances[0]
{ "RootDeviceType": "ebs", "VirtualizationType": "hvm", "AmiLaunchIndex": 0, "SecurityGroups": [ { "GroupName": "launch-wizard-5-1", "GroupId": "sg-0703dcefff5dcf007" } ], ... "ProductCodes": [], "LaunchTime": "2018-12-19T09:56:26.000Z", "State": { "Name": "running", "Code": 16 }, "PrivateIpAddress": "10.2.1.85", "SubnetId": "subnet-0d00d8b5d01e66e35", "Architecture": "x86_64" } |
$aws ec2 describe-instances | jq .Reservations[0].Instances[0].I^C
|
$aws
usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters] To see help text, you can run: aws help aws <command> help aws <command> <subcommand> help aws: error: the following arguments are required: command |
$sudo nano
|
$sudo bash
[sudo] password for user: |
$compete -C aws_completer aws
bash: compete: command not found |
$sudo complete -C aws_completer aws
sudo: complete: command not found |
$complete -C aws_completer aws
|
$aws
Display all 171 possibilities? (y or n) acm kafka acm-pca kinesis alexaforbusiness kinesisanalytics amplify kinesisanalyticsv2 apigateway kinesisvideo apigatewaymanagementapi kinesis-video-archived-media apigatewayv2 kinesis-video-media application-autoscaling kms appmesh lambda ... batch machinelearning budgets macie ce marketplacecommerceanalytics chime marketplace-entitlement cloud9 mediaconnect clouddirectory mediaconvert cloudformation medialive cloudfront mediapackage cloudhsm mediastore cloudhsmv2 mediastore-data |
$aws ec2 describe-in
describe-instance-attribute describe-instance-credit-specifications describe-instances describe-instance-status describe-internet-gateways |
$aws ec2 describe-in
usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters] To see help text, you can run: aws help aws <command> help aws <command> <subcommand> help aws: error: argument operation: Invalid choice, valid choices are: accept-reserved-instances-exchange-quote | accept-vpc-peering-connection allocate-address | allocate-hosts assign-private-ip-addresses | associate-address associate-dhcp-options | associate-route-table ... reset-image-attribute | reset-instance-attribute reset-network-interface-attribute | reset-snapshot-attribute restore-address-to-classic | revoke-security-group-egress revoke-security-group-ingress | run-instances run-scheduled-instances | start-instances stop-instances | terminate-instances unassign-private-ip-addresses | unmonitor-instances wait | help Invalid choice: 'describe-in', maybe you meant: * describe-regions |
$aws ec2 describe-instance
usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters] To see help text, you can run: aws help aws <command> help aws <command> <subcommand> help aws: error: argument operation: Invalid choice, valid choices are: accept-reserved-instances-exchange-quote | accept-vpc-peering-connection allocate-address | allocate-hosts assign-private-ip-addresses | associate-address associate-dhcp-options | associate-route-table ... reset-network-interface-attribute | reset-snapshot-attribute restore-address-to-classic | revoke-security-group-egress revoke-security-group-ingress | run-instances run-scheduled-instances | start-instances stop-instances | terminate-instances unassign-private-ip-addresses | unmonitor-instances wait | help Invalid choice: 'describe-instance', maybe you meant: * describe-instances * describe-instance-status |
$aws ec2 describe-instance
describe-instance-attribute describe-instance-credit-specifications describe-instances describe-instance-status |
$aws ec2 describe-instance
describe-instance-attribute describe-instance-credit-specifications describe-instances describe-instance-status |
$aws ec2 describe-instance
describe-instance-attribute describe-instance-credit-specifications describe-instances describe-instance-status |
$aws ec2 describe-instance
describe-instance-attribute describe-instance-credit-specifications describe-instances describe-instance-status |
$aws ec2 describe-instances
{ "Reservations": [ { "OwnerId": "886677986286", "Instances": [ { "PublicDnsName": "ec2-52-19-122-40.eu-west-1.compute.amazonaws.com", "Architecture": "x86_64", "ProductCodes": [], "SecurityGroups": [ ... } } ] } ], "Groups": [], "ReservationId": "r-0c0e59eec99ee07d6" } ] } |
$aws ec2 describe-instances-status
usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters] To see help text, you can run: aws help aws <command> help aws <command> <subcommand> help aws: error: argument operation: Invalid choice, valid choices are: accept-reserved-instances-exchange-quote | accept-vpc-peering-connection allocate-address | allocate-hosts assign-private-ip-addresses | associate-address associate-dhcp-options | associate-route-table ... restore-address-to-classic | revoke-security-group-egress revoke-security-group-ingress | run-instances run-scheduled-instances | start-instances stop-instances | terminate-instances unassign-private-ip-addresses | unmonitor-instances wait | help Invalid choice: 'describe-instances-status', maybe you meant: * describe-instance-status * describe-instances * describe-instance-attribute |
$sudo pip install saws
Collecting saws Downloading https://files.pythonhosted.org/packages/ef/7a/37581ad99e8aefc9976c463fb7741593e1ff91dea2228ec5f889ba6b9e33/saws-0.4.3.tar.gz (46kB) 100% |████████████████████████████████| 51kB 816kB/s Requirement already satisfied: awscli<2.0.0,>=1.7.46 in /usr/local/lib/python2.7/dist-packages (from saws) Collecting click<7.0,>=4.0 (from saws) Downloading https://files.pythonhosted.org/packages/34/c1/8806f99713ddb993c5366c362b2f908f18269f8d792aff1abfd700775a77/click-6.7-py2.py3-none-any.whl (71kB) 100% |████████████████████████████████| 71kB 1.7MB/s Requirement already satisfied: configobj<6.0.0,>=5.0.6 in /usr/local/lib/python2.7/dist-packages (from saws) Requirement already satisfied: enum34>=1.0.4 in /usr/lib/python2.7/dist-packages (from saws) Requirement already satisfied: prompt-toolkit<1.1.0,>=1.0.0 in /usr/local/lib/python2.7/dist-packages (from saws) ... Requirement already satisfied: futures<4.0.0,>=2.2.0; python_version == "2.6" or python_version == "2.7" in /usr/local/lib/python2.7/dist-packages (from s3transfer<0.2.0,>=0.1.12->awscli<2.0.0,>=1.7.46->saws) Requirement already satisfied: jmespath<1.0.0,>=0.7.1 in /usr/local/lib/python2.7/dist-packages (from botocore==1.12.68->awscli<2.0.0,>=1.7.46->saws) Requirement already satisfied: python-dateutil<3.0.0,>=2.1; python_version >= "2.7" in /usr/local/lib/python2.7/dist-packages (from botocore==1.12.68->awscli<2.0.0,>=1.7.46->saws) Requirement already satisfied: urllib3<1.25,>=1.20; python_version == "2.7" in /usr/local/lib/python2.7/dist-packages (from botocore==1.12.68->awscli<2.0.0,>=1.7.46->saws) Building wheels for collected packages: saws Running setup.py bdist_wheel for saws ... done Stored in directory: /root/.cache/pip/wheels/d5/76/41/cd49100cd35049d460ec69eea00501e2c7805febafd26fc911 Successfully built saws Installing collected packages: click, saws Successfully installed click-6.7 saws-0.4.3 |
$mkdir InfrastructureScripts
|
$ls
InfrastructureScripts README.md testAWS.md |
$cd InfrastructureScripts/
|
$touch create-infrastructure.sh
|
$ssh 172.20.13.183
bash: warning: command substitution: ignored null byte in input bash: warning: command substitution: ignored null byte in input [user@instructor:~]$ bash: warning: command substitution: ignored null byte in input [user@instructor:~]$ [user@instructor:~]$ bash: warning: command substitution: ignored null byte in input [user@instructor:~]$ [user@instructor:~]$ [user@instructor:~]$ ... [user@instructor:~]$ [user@instructor:~]$ bash: warning: command substitution: ignored null byte in input [user@instructor:~]$ [user@instructor:~]$ [user@instructor:~]$ [user@instructor:~]$ [user@instructor:~]$ screen -x bash: warning: command substitution: ignored null byte in input Connection to 172.20.13.183 closed. |
Время первой команды журнала | 12:24:38 2018-12-19 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Время последней команды журнала | 13:18:12 2018-12-19 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Количество командных строк в журнале | 50 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Процент команд с ненулевым кодом завершения, % | 26.00 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Процент синтаксически неверно набранных команд, % | 8.00 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Суммарное время работы с терминалом *, час | 0.89 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Количество командных строк в единицу времени, команда/мин | 0.93 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Частота использования команд |
|
В журнал автоматически попадают все команды, данные в любом терминале системы.
Для того чтобы убедиться, что журнал на текущем терминале ведётся, и команды записываются, дайте команду 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