您的位置:首页 > 运维架构 > Linux

Linux 使用 cURL 查看天气

2018-01-27 15:21 309 查看


Centos7环境下安装curl


Contents

curl介绍

curl安装步骤

curl测试效果

curl
帮助文档


curl介绍

curl是利用URL语法在命令行方式下工作的开源文件传输工具。它被广泛应用在Unix、多种Linux发行版中,并且有DOS和Win32、Win64下的移植版本。

curl是一款著名的字符界面下的下载工具,支持HTTP、HTTPS、FTP、FTPS、DICT、TELNET、LDAP、FILE,和GOPHER。此外还具有cookies支持、断点续传、FTP上传、密码支持、SSL支持和代理支持等特性。curl同时还提供了一套libcurl的库,开发者可以基于这个库开发其他下载工具。

官网地址:https://curl.haxx.se/

官网文档:https://curl.haxx.se/docs/

官网下载地址:https://curl.haxx.se/download.html


curl安装步骤

1.获得安装包,从网上直接下载或者其他途径,这里直接wget

#
wget https://curl.haxx.se/download/curl-7.54.0.tar.gz
2.解压到当前目录

1# tar -zxf curl-7.54.0.tar.gz
3.进入解压后的目录内

1

#
cd
curl-7.17.1

4.安装与配置

1234./configuremakemake test (optional)make install
详细可以参考官方安装文档:https://curl.haxx.se/docs/install.html

curl测试效果

测试版本:curl –version

发送一个get请求: curl http://www.netscape.com/
详细可以参考官方测试例子文档:https://curl.haxx.se/docs/manual.html当然也可以通过centos中的 curl –manual 来获取使用例子。

curl 帮助文档

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

Options:
(H)
means
HTTP/HTTPS
only,
(F)
means
FTP
only

--anyauth
Pick
"any"
authentication
method
(H)

-a/--append 上传文件时,附加到目标文件
(F/SFTP)

--basic
使用HTTP基本验证(H)

--cacert
<file>
CA
certificate
to
verify
peer
against
(SSL)

--capath
<directory>
CA
directory
to
verify
peer
against
(SSL)

-E/--cert
<cert[:passwd]>
Client
certificate
file
and
password
(SSL)

--cert-type
<type>
Certificate
file
type
(DER/PEM/ENG)
(SSL)

--ciphers
<list>
SSL
ciphers
to
use
(SSL)

--compressed Request
compressed
response
(using
deflate
or
gzip)

-K/--config
<file>
Specify
which
config
file
to
read

--connect-timeout
<seconds>
Maximum
time
allowed
for
connection

-C/--continue-at
<offset>
Resumed
transfer
offset

-b/--cookie
<name=string/file>
cookie字符串或文件读取位置
(H)

-c/--cookie-jar
<file>
Write
cookies
to
this
file
after
operation
(H)

--create-dirs
Create
necessary
local
directory
hierarchy

--crlf Convert
LF
to
CRLF
in
upload

--crlfile
<file>
Get
a
CRL
list
in
PEM
format
from
the
given
file

-d/--data
<data> HTTP
POST方式传送数据
(H)

--data-ascii
<data> 以ascii的方式post数据
(H)

--data-binary
<data>
以二进制的方式post数据
(H)

--data-urlencode
<name=data/name@filename>
HTTP
POST
data
url
encoded
(H)

--delegation
STRING
GSS-API
delegation
permission

--digest 使用数字身份验证(H)

--disable-eprt 禁止使用EPRT或LPRT
(F)

--disable-epsv 禁止使用EPSV
(F)

-D/--dump-header
<file>
把header信息写入到该文件中

--egd-file
<file>
为随机数据(SSL)设置EGD
socket路径
(SSL)

--engine
<eng> Crypto
engine
to
use
(SSL).
"--engine
list"
for
list

-f/--fail
连接失败时不显示http错误(H)

-F/--form
<name=content>
模拟http表单提交数据
(H)

--form-string
<name=string>
模拟http表单提交数据
(H)

--ftp-account
<data>
Account
data
to
send
when
requested
by
server
(F)

--ftp-alternative-to-user
<cmd>
String
to
replace
"USER
[name]"
(F)

--ftp-create-dirs
如果远程目录不存在,创建远程目录
(F)

--ftp-method
[multicwd/nocwd/singlecwd]
控制CWD的使用
(F)

--ftp-pasv 使用
PASV/EPSV
代替端口(F)

-P/--ftp-port
<address>
Use
PORT
with
address
instead
of
PASV
(F)

--ftp-skip-pasv-ip 使用PASV的时候,忽略该IP地址(F)

--ftp-ssl
尝试用
SSL/TLS
来进行ftp数据传输
(F)

--ftp-ssl-ccc
Send
CCC
after
authenticating
(F)

--ftp-ssl-ccc-mode
[active/passive]
Set
CCC
mode
(F)

--ftp-ssl-control
Require
SSL/TLS
for
ftp
login,
clear
for
transfer
(F)

--ftp-ssl-reqd Require
SSL/TLS
for
ftp
transfer
(F)

-G/--get 以get的方式来发送数据
(H)

-g/--globoff 禁用网址序列和范围使用{}和[]
{}
and
[]

-H/--header
<line>
自定义头信息传递给服务器
(H)

-I/--head Show
document
info
only

-h/--help
帮助

--hostpubmd5
<md5>
Hex
encoded
MD5
string
of
the
host
public
key.
(SSH)

-0/--http1.0
Use
HTTP
1.0
(H)

--ignore-content-length
忽略的HTTP头信息的长度

-i/--include
输出时包括protocol头信息
(H/F)

-k/--insecure Allow
connections
to
SSL
sites
without
certs
(H)

--interface
<interface>
Specify
network
interface/address
to
use

-4/--ipv4 Resolve
name
to
IPv4
address

-6/--ipv6 Resolve
name
to
IPv6
address

-j/--junk-session-cookies
Ignore
session
cookies
read
from
file
(H)

--keepalive-time
<seconds>
Interval
between
keepalive
probes

--key
<key>
Private
key
file
name
(SSL/SSH)

--key-type
<type>
Private
key
file
type
(DER/PEM/ENG)
(SSL)

--krb
<level>
Enable
Kerberos
with
specified
security
level
(F)

--libcurl
<file>
Dump
libcurl
equivalent
code
of
this
command
line

--limit-rate
<rate>
Limit
transfer
speed
to
this
rate

-l/--list-only
List
only
names
of
an
FTP
directory
(F)

--local-port
<num>[-num]
Force
use
of
these
local
port
numbers

-L/--location Follow
Location:
hints
(H)

--location-trusted
Follow
Location:
and
send
auth
to
other
hosts
(H)

-M/--manual Display
the
full
manual

--max-filesize
<bytes>
Maximum
file
size
to
download
(H/F)

--max-redirs
<num>
Maximum
number
of
redirects
allowed
(H)

-m/--max-time
<seconds>
Maximum
time
allowed
for
the
transfer

--negotiate
Use
HTTP
Negotiate
Authentication
(H)

-n/--netrc
Must
read
.netrc
for
user
name
and
password

--netrc-optional
Use
either
.netrc
or
URL;
overrides
-n

-N/--no-buffer
Disable
buffering
of
the
output
stream

--no-keepalive Disable
keepalive
use
on
the
connection

--no-sessionid Disable
SSL
session-ID
reusing
(SSL)

--noproxy
Comma-separated
list
of
hosts
which
do
not
use
proxy

--ntlm Use
HTTP
NTLM
authentication
(H)

-o/--output
<file>
Write
output
to
<file>
instead
of
stdout

--pass <pass> Pass
phrase
for
the
private
key
(SSL/SSH)

--post301
Do
not
switch
to
GET
after
following
a
301
redirect
(H)

--post302
Do
not
switch
to
GET
after
following
a
302
redirect
(H)

-#/--progress-bar Display
transfer
progress
as
a
progress
bar

-x/--proxy
<host[:port]>
Use
HTTP
proxy
on
given
port

--proxy-anyauth
Pick
"any"
proxy
authentication
method
(H)

--proxy-basic
Use
Basic
authentication
on
the
proxy
(H)

--proxy-digest Use
Digest
authentication
on
the
proxy
(H)

--proxy-negotiate
Use
Negotiate
authentication
on
the
proxy
(H)

--proxy-ntlm Use
NTLM
authentication
on
the
proxy
(H)

-U/--proxy-user
<user[:password]>
Set
proxy
user
and
password

--proxy1.0
<host[:port]>
Use
HTTP/1.0
proxy
on
given
port

-p/--proxytunnel
Operate
through
a
HTTP
proxy
tunnel
(using
CONNECT)

--pubkey
<key> Public
key
file
name
(SSH)

-Q/--quote
<cmd>
Send
command(s)
to
server
before
file
transfer
(F/SFTP)

--random-file
<file>
File
for
reading
random
data
from
(SSL)

-r/--range
<range>
Retrieve
only
the
bytes
within
a
range

--raw
Pass
HTTP
"raw",
without
any
transfer
decoding
(H)

-e/--referer
Referer
URL
(H)

-O/--remote-name
Write
output
to
a
file
named
as
the
remote
file

--remote-name-all
Use
the
remote
file
name
for
all
URLs

-R/--remote-time
在本地生成文件时,保留远程文件时间

-X/--request
<command>
Specify
request
command
to
use

--retry
<num>
传输出现问题时,重试的次数

--retry-delay
<seconds> 传输出现问题时,设置重试间隔时间

--retry-max-time
<seconds>
传输出现问题时,设置最大重试时间
period

-S/--show-error
显示错误

-s/--silent
不输出任何东西

--socks4
<host[:port]>
SOCKS4
proxy
on
given
host
+
port

--socks4a
<host[:port]>
SOCKS4a
proxy
on
given
host
+
port

--socks5
<host[:port]>
SOCKS5
proxy
on
given
host
+
port

--socks5-hostname
<host[:port]>
SOCKS5
proxy,
pass
host
name
to
proxy

--socks5-gssapi-service
<name>
SOCKS5
proxy
service
name
for
gssapi

--socks5-gssapi-nec Compatibility
with
NEC
SOCKS5
server

-Y/--speed-limit
停止传输速度的限制,速度时间'秒

-y/--speed-time 放弃限速所要的时间。默认为30
Defaults
to
30

-2/--sslv2
Use
SSLv2
(SSL)

-3/--sslv3
Use
SSLv3
(SSL)

--stderr
<file>
Where
to
redirect
stderr.
-
means
stdout

--tcp-nodelay
Use
the
TCP_NODELAY
option

-t/--telnet-option
<OPT=val>
Set
telnet
option

-z/--time-cond
<time> 传送时间设置

-1/--tlsv1
Use
=>
TLSv1
(SSL)

--tlsv1.0
Use
TLSv1.0
(SSL)

--tlsv1.1
Use
TLSv1.1
(SSL)

--tlsv1.2
Use
TLSv1.2
(SSL)

--trace
<file> Write
a
debug
trace
to
the
given
file

--trace-ascii
<file>
Like
--trace
but
without
the
hex
output

--trace-time Add
time
stamps
to
trace/verbose
output

-T/--upload-file
<file>
Transfer
<file>
to
remote
site

--url
<URL>
Set
URL
to
work
with

-B/--use-ascii
Use
ASCII/text
transfer

-u/--user
<user[:password]>
Set
server
user
and
password

-A/--user-agent
<string>
User-Agent
to
send
to
server
(H)

-v/--verbose
Make
the
operation
more
talkative

-V/--version
Show
version
number
and
quit

-w/--write-out
<format>
What
to
output
after
completion

-q
If
used
as
the
first
parameter
disables
.curlrc


查看天气

首先,打开 Linux 终端或者 Linux 子系统,先来检查一下有没有安装 cURL,输入
which curl
,如果有返回信息,比如
/usr/bin/curl
,表示
cURL 已经安装,如果没有返回信息,可以使用
sudo apt-get update;sudo apt-get install
curl # 仅适用于 Debian/Ubuntu
来进行安装。

cURL 准备好以后,就可以来获取天气了,简单来说就是用 cURL 把一个网站的天气信息传回本地,这个网站就是:wttr.in

我们可以先试一下获取,输入
curl wttr.in
,是不是跟网站一模一样,可是输出的都是英文,而且位置有时候也会判断错误,可以通过参数来指定位置和语言。

curl -H "Accept-Language: 语言" wttr.in/地名
,这个地名可以是很多种,可以是城市名称,如:Beijing(北京);机场代码,如:PEK(北京首都国际机场);域名所在位置,如:@mivm.cn(浙江杭州);GPS
坐标,如:-39.9087191,116.3952003(天安门),还有两个,任意位置和区号,不过那个在国内不好用,所以就不说了,至于语言,目前支持的语言:
az
be bg bs ca cy cs da de el eo es et fi fr hi hr hu hy is it ja jv ka kk ko ky lv mk ml nl nn pt pl ro ru sk sl sr sr-lat sv sw th tr uk uz vi zh zu
,比如我在郑州,输入
curl
-H "Accept-Language: zh" wttr.in/ZhengZhou




默认获取3天的天气,最多只能获取3天,那么只想获取当天或者1天的天气怎么办呢,继续加参数啊。
curl -H "Accept-Language:
语言" wttr.in/地名?天数#
,天数可以指定为:0、1、2,0 表示当前天气,1 表示当前天气 + 1天天气,2 表示当前天气 + 2天天气,比如
curl
-H "Accept-Language: zh" wttr.in/ZhengZhou?1#
,这个其实是个查看选项,可以使用其他查看选项来更改样式,n:输出显示为窄版;q:不显示“天气预报”字样;Q:不显示“天气预报”和城市名称;T:不显示颜色,这些参数可以配合起来使用,比如
curl
-H "Accept-Language: zh" wttr.in/ZhengZhou?1T#





查看月相

这个网站不仅可以查询天气,还可以查看月相,至于月相是什么鬼,我也不太清楚,反正能装X就对了。

输入
curl wttr.in/moon
即可查看月相,可以指定日期来查看,比如
curl
wttr.in/moon@2016-10-25




以后如果有人问你你那里的天气怎么样,你就可以用这种方法来获取天气,然后截图装X,哈哈哈。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: