
正文
linuxaws命令 linux w命令
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
aws cli打开马上就退出了是怎么回事
1. 只通过一条命令就可以删除指定的S3 bucket和其中的所有内容
有些时候,你可能需要关闭某个bucket并删除其储存的成百上千(或成千上万)个你不要的文件。如果你有删除大量存储在S3中内容的经历,那么你已经了解这是一个颇费时的操作。下面的命令将帮助你删除一个bucket,以及其储存的内容和目录:
aws s3 rb s3://bucket-name --force
2. 递归地复制PC中的一个目录以及其子文件到Amazon S3
如果你使用过S3控制台,在某一阶段,你可能会需要将PC中大量的文件复制到S3 bucket中。同样,这是一个体力活,需要耗费一定的时间,特别是你所需要复制的文件在一个多层目录下。下面的这条命令将简化这个操作,可以帮助你把PC的一个目录以及其下所有子文件夹复制到S3中的一个指定region。
aws s3 cp MyFolder s3://bucket-name -- recursive [--region us-west-2]
3. 查询所有可用ec2镜像的子集
下面这条命令将根据条件在所有可用的ec2镜像上做搜索,在这里,我们过滤出所有基于Ubuntu的镜像(这里假设终端使用的是Linux或者Mac)。
aws ec2 describe-images | grep ubuntu
注意:这个操作可能会需要数分钟来完成。
4. 在不同格式下列出用户
有些时候,取决于你选择的默认输出格式,当你调用一个长列表时(比如一个大的用户集),输出格式的可读性可能并不理想。使用下面这条命令,在不修改默认设置的情况下,将会输出一个更易于阅读的表格。
aws iam list-users --output table
5. 显示一个S3 bucket和其储存项目的大小
下面这条命令使用JSON输出来显示一个bucket的大小,以及其中储存项目的大小。在分析S3存储的使用情况时,你就可能用到这个命令。
aws s3api list-objects --bucket BUCKETNAME --output json --query "[sum(Contents[].Size), length(Contents[])]"
6. 将指定S3 bucket转移到另一个位置
如果你想快速将一个S3 bucket移至别处,下面这条命令可能帮助你节约大量时间。
aws s3 sync s3://oldbucket s3://newbucket --source-region
us-west-1 --region us-west-2
7. 通过ARN列出用户
“jq”类似于针对JSON数据的sed命令——你可以使用它来分割、过滤、映射及转换结构化数据,类似sed、awk、grep等在non-JSON文本中的功能。
结合这个功能,我们再列出所有用户时可以只显示他们的ARN。
aws iam list-users --output json | jq -r .Users[].Arn
注意:默认情况下,系统可能并不会安装jq。在基于Debian的系统中(包括Ubuntu),使用sudo apt-get来安装jq。
8. 列出所有停止实例,及停止原因
这是JSON输出参数的另一种用法。这次将列出所有停止的实例,并且显示停止原因:
aws ec2 describe-instances --filters Name=instance-state-name,
Values=stopped --region eu-west-1 --output json |
jq -r .Reservations[].Instances[].StateReason.Message
9. 检测你的一个CloudFormation模板
如果你写了一个Cloud Formation Template,并需要在发布前对其进行验证,你可以使用如下命令在CLI中处理:
aws cloudformation validate-template --region
eu-west-1 --template-url
10. 另一种使用JSON给AWS CLI传递输入参数的方法
你可以给AWS CLI传递任何格式的输入参数。下面是一个例子:
aws iam put-user-policy --user-name AWS-Cli-Test --policy-name Power-Access --
policy-document '{ "Statement": [ { "Effect": "Allow", "NotAction": "iam:*", "Resource":
"*" } ] }
相关问答
Q1: 如何在Amazon AWS上设置一台Linux服务器
建议你好好学学linux基础,具体要怎么设置?
ssh得知道吧?
SSH(Secure Shell)是一种能够提供安全远程登录会话的协议,也是目前远程管理Linux系统最首选的方式,因为传统的ftp或telnet服务是不安全的,它们会将帐号口令和数据资料等数据在网络中以明文的形式进行传送,这种数据传输方式很容易受到黑客“中间人”的嗅探攻击,轻则篡改了传输的数据信息,重则直接抓取到了服务器的帐号密码。
想要通过SSH协议来管理远程的Linux服务器系统,咱们需要来部署配置sshd服务程序,sshd是基于SSH协议开发的一款远程管理服务程序,不仅使用起来方便快捷,而且能够提供两种安全验证的方法——基于口令的安全验证,指的就是咱们一般使用帐号和密码验证登陆,基于密钥的安全验证,则是需要在本地生成密钥对,然后将公钥传送至服务端主机进行的公共密钥比较的验证方式,相比较来说更加的安全。
因为在Linux系统中的一切都是文件,因此要想在Linux系统中修改服务程序的运行参数,实际上也是在修改程序配置文件的过程,sshd服务的配置信息保存在/etc/ssh/sshd_config文件中,运维人员一般会把保存着最主要配置信息的文件称为主配置文件,而配置文件中有许多#(井号)开头的注释行,要想让这些配置参数能够生效,咱们需要修改参数后再去掉前面的井号才行,sshd服务配置文件中重要的参数包括有:
# 第九章
#Port 22 默认的sshd服务端口。
#ListenAddress 0.0.0.0 设定sshd服务端监听的IP地址。
#Protocol 2 SSH协议的版本号。
#HostKey /etc/ssh/ssh_host_key SSH协议版本为1时,私钥存放的位置。
HostKey /etc/ssh/ssh_host_rsa_key SSH协议版本为2时,RSA私钥存放的位置。
#HostKey /etc/ssh/ssh_host_dsa_key SSH协议版本为2时,DSA私钥存放的位置。
#PermitRootLogin yes 设定是否允许root用户直接登录。
#StrictModes yes 当远程用户私钥改变时则直接拒绝连接。
#MaxAuthTries 6 最大密码尝试次数
#MaxSessions 10 最大终端数
#PasswordAuthentication yes 是否允许密码验证
#PermitEmptyPasswords no 是否允许空密码登陆(很不安全)
在红帽RHEL7系统中sshd服务程序已经默认安装好并启动了,咱们可以使用ssh命令来进行远程连接,格式为“ssh [参数] 主机IP地址”,退出登陆则可执行exit命令:
[root@linuxprobe ~]# ssh 192.168.10.20
The authenticity of host '192.168.10.20 (192.168.10.20)' can't be established.
ECDSA key fingerprint is 4f:a7:91:9e:8d:6f:b9:48:02:32:61:95:48:ed:1e:3f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.10.20' (ECDSA) to the list of known hosts.
root@192.168.10.20's password:此处输入远程主机root用户的密码
Last login: Wed Apr 15 15:54:21 2017 from 192.168.10.10
[root@linuxprobe ~]#
[root@linuxprobe ~]# exit
logout
Connection to 192.168.10.10 closed.
咱们可以尝试不让超级管理员root用户远程登陆到sshd服务上,这样一方面能提高服务器被黑客暴力破解密码的机率,也能让同学们锻炼下对服务程序的配置能力,首先咱们需要使用vim文本编辑器打开sshd服务的主配置文件,然后将第48行#PermitRootLogin no参数前的#号去掉,并将yes改成no,这样就不再允许root用户远程登陆了,最后记得保存并退出文件即可,修改后的参数如下:
[root@linuxprobe ~]# vim /etc/ssh/sshd_config
………………省略部分输出信息………………
46
47 #LoginGraceTime 2m
48 PermitRootLogin no
49 #StrictModes yes
50 #MaxAuthTries 6
51 #MaxSessions 10
52
………………省略部分输出信息………………
不要忘记一件重要的事情,一般的服务程序并不会在咱们修改配置文件后就立即获取到了最新的运行参数,如果想让新的配置文件起效,咱们需要手动的重启一下服务程序才行,并且最好也能将这个服务程序加入到开机启动项中,这样使得下一次重启时sshd服务程序会自动运行。
[root@linuxprobe ~]# systemctl restart sshd
[root@linuxprobe ~]# systemctl enable sshd
超级管理员root用户再来尝试连接sshd服务程序就会提示不可访问的错误信息了,虽然sshd服务程序的参数相对比较简单,但这就是Linux系统中配置服务程序的正确方法,同学们只要能做到活学活用,那即便以后遇到了没见过的服务也一样能够配置了~
[root@linuxprobe ~]# ssh 192.168.10.10
root@192.168.10.10's password:此处输入远程主机root用户的密码
Permission denied, please try again.
Q2: 使用 SSH 连接到AWS EC2 Linux 实例(Windows可用SSH)
启动您的实例之后,您可以连接到该实例,然后像使用您面前的计算机一样来使用它。
另外,使用XShell方式连接EC2,参考:
以下介绍如何使用 SSH 客户端连接到您的AWS EC2实例,当然,该方案适用连接任何Linux系统实例。
在连接到 Linux 实例之前,请先完成以下先决条件:
验证该实例是否就绪
启动实例后,需要几分钟准备好实例,以便您能连接到实例。检查您的实例是否通过了状态检查。您可以在 实例 页面的 状态检查 列中查看此信息。
验证有关连接到您的实例的常规先决条件
要查找实例的公有 DNS 名称或 IP 地址以及您应用来连接到实例的用户名,请参阅 连接到您的实例的常规先决条件 。
根据需要在您的本地计算机上安装 SSH 客户端
您的本地计算机可能已默认安装了 SSH 客户端。您可以通过在命令行中键入 ssh 来验证这一点。如果您的计算机无法识别该命令,可安装 SSH 客户端。
通过以下过程使用 SSH 客户端连接到您的 Linux 实例。如果您在尝试连接到实例时收到错误,请参阅 排查实例的连接问题 。
使用 SSH 连接到您的实例
您会看到如下响应:
这样就可以在WINDOWS的命令行里面对另一个系统进行操作了。
Q3: 如何使用Linux命令行访问Amazon S3云存储
在linux上安装s3cmd
在Ubuntu或者Debian上安装s3cm
$ sudo apt-get install s3cmd
在Fedora上安装s3cmd
$ sudo yum install s3cmd
在CentOS或者RHEL上安装s3cm
$ s3cmd put –acl-public 4.png s3://dev99
4.png - s3://dev99/4.png [1 of 1]
30778 of 30778 100% in 8s 3.34 kB/s done
先从官方站点上下载rpm包,然后手工安装。64位CentOS或RHEL 6,用以下命令:
$ sudo rpm -ivh s3cmd-1.0.0-4.1.x86_64.rpm
配置s3cmd
第一次运行s3cmd需要运行下面的命令做配置:
$ s3cmd –configure
它将会问你一系列问题:
AWS S3的访问密钥和安全密钥
对AWS S3双向传输的加密密码和加密数据
为加密数据设定GPG程序的路径(例如,/usr/bin/gpg)
是否使用https协议
如果使用http代理,设定名字和端口
配置将以保存普通文本格式保存在 ~/.s3cfg.
s3cmd的基本用法
在你的账户中列出所有现有的bucket:
$ s3cmd ls
2011-05-28 22:30 s3://mybucket1
2011-05-29 00:14 s3://mybucket2
建立新的bucket:
$ s3cmd mb s3://dev99
Bucket ’s3://dev99/’ created
上传文件到现有的bucket:
$ s3cmd put 1.png 2.png 3.png s3://dev99
1.png - s3://dev99/1.png [1 of 3]
26261 of 26261 100% in 5s 4.33 kB/s done
2.png - s3://dev99/2.png [2 of 3]
201430 of 201430 100% in 2s 98.05 kB/s done
3.png - s3://dev99/3.png [3 of 3]
46630 of 46630 100% in 0s 56.62 kB/s done
上传文件的默认访问权限是私有的(private),就是只有你自己可以访问,使用正确的访问和安全密码即可。
上传公开访问权限的文件到现有bucket:
$ s3cmd put --acl-public 4.png s3://dev99
4.png - s3://dev99/4.png [1 of 1]
30778 of 30778 100% in 8s 3.34 kB/s done
Public URL of the object is:
如果上传的文件授予公开访问权限,任何人在浏览器中都可以通过 访问。
查看一个现有bucket的内容:
$ s3cmd ls s3://dev99
2013-06-02 02:52 26261 s3://dev99/1.png
2013-06-02 02:52 201430 s3://dev99/2.png
2013-06-02 02:52 46630 s3://dev99/3.png
2013-06-02 02:56 30778 s3://dev99/4.png
下载现有bucket包含的文件(例如所有的.png文件):
$ s3cmd get s3://dev99/*.png
s3://dev99/1.png - ./1.png [1 of 4]
26261 of 26261 100% in 0s 39.39 kB/s done
s3://dev99/2.png - ./2.png [2 of 4]
201430 of 201430 100% in 7s 24.64 kB/s done
s3://dev99/3.png - ./3.png [3 of 4]
46630 of 46630 100% in 1s 39.34 kB/s done
s3://dev99/4.png - ./4.png [4 of 4]
30778 of 30778 100% in 0s 97.01 kB/s done
删除现有bucket中的文件:
$ s3cmd del s3://dev99/*.png
File s3://dev99/1.png deleted
File s3://dev99/2.png deleted
File s3://dev99/3.png deleted
File s3://dev99/4.png deleted
获取现有bucket的信息,包括存储位置和访问控制列表(ACL):
$ s3cmd info s3://dev99
s3://dev99/ (bucket):
Location: us-east-1
ACL: dan.nanni: READ
ACL: dan.nanni: WRITE
ACL: dan.nanni: READ_ACP
ACL: dan.nanni: WRITE_ACP
在上传到现有的bucket之前,加密文件:
$ s3cmd -e put encrypt.png s3://dev99
/tmp/tmpfile-pzT1zV3kLZlxDwqA0kwy - s3://dev99/encrypt.png [1 of 1]
196890 of 196890 100% in 1s 99.51 kB/s done
当用s3cmd下载一个加密过的文件时,它会自动检测加密并在下载过程解密,因此下载和访问加密文件时,就像通常所做的一样:
$ s3cmd get s3://dev99/encrypt.png
s3://dev99/encrypt.png - ./encrypt.png [1 of 1]
196890 of 196890 100% in 1s 131.29 kB/s done
删除现有的bucket:
$ s3cmd rb s3://dev99
Bucket ’s3://dev99/’ removed
注意,你不能删除一个非空的bucket.
关于linuxaws命令和linux w命令的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







