Flask-OAuth urlparse错误

最近用到了Flash-OAuth的三方库,一运行,错误

1
2
3
4
5
  File "/Users/FQY/Desktop/bm_blog/blog/extensions.py", line 10, in <module>
from flask_oauth import OAuth
File "/Users/FQY/env350/lib/python3.5/site-packages/flask_oauth.py", line 13, in <module>
from urlparse import parse
ImportError: No module named 'urlparse'

先说明下我用的python环境是3.5.0,百度下说是from urlparse import urljoin 是2.0的python用法,3.0的python用法已经urlparse已经被重新设置,所以进入三方库里面改下就可以了。
进入flask_oauth.py文件中进行修改
原代码

1
2
3
4
5
6
7
import httplib2
from functools import wraps
from urlparse import urljoin
from flask import request, session, json, redirect, Response
from werkzeug import url_decode, url_encode, url_quote, \
parse_options_header, Headers
import oauth2

修改以后的代码

1
2
3
4
5
6
7
import httplib2
from functools import wraps
from urllib.parse import urljoin
from flask import request, session, json, redirect, Response
from werkzeug import url_decode, url_encode, url_quote, \
parse_options_header, Headers
import oauth2

这时候在运行就可以了。

Linux file命令:查看文件信息或类型

Linux file命令用于辨识文件类型,通过file指令,我们得以辨识该文件的类型。

语法

file [-bcLvz][-f <名称文件>][-m <魔法数字文件>…][文件或目录…]
参数

  • -b  列出辨识结果时,不显示文件名称。
  • -c  详细显示指令执行过程,便于排错或分析程序执行的情形。
  • -f<名称文件>  指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称。
  • -L  直接显示符号连接所指向的文件的类别。
  • -m<魔法数字文件>  指定魔法数字文件。
  • -v  显示版本信息。
  • -z  尝试去解读压缩文件的内容 (支持gzip类型)。
  • [文件或目录…]要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件

实例

查看文件类型
1
2
[root@hardwareupdate linux_test]# file hello.txt
hello.txt: UTF-8 Unicode text

使用不带任何选项的 file 命令,即可查看指定文件的类型信息。在上面的例子中可以看出 poetry.txt 的文件类型为 text,编码格式为 UTF-8。

使用-b就只显示编码和文件类型,不显示文件名

1
2
[root@hardwareupdate linux_test]# file -b hello.txt
UTF-8 Unicode text

使用-i,咱们能看出什么?

1
2
[root@hardwareupdate linux_test]# file -i hello.txt
hello.txt: text/plain; charset=utf-8

常见的文件类型:

  • text/plain:普通文本。
  • text/html:HTML文本。
  • application/pdf:PDF文档。
  • application/msword:Word文档。
  • image/png:PNG图片。
  • mage/jpeg:JPEG图片。
  • application/x-tar:TAR文件。
  • application/x-gzip:GZIP文件
按照清单去工作

如果我们需要用 file 命令查看大量文件的类型信息,恰好这些文件的名称都被存储在了一个文本文件中,那么-f选项就派上用场了。我们可以通过-f选项来指定这个文本文件,file 命令就会乖乖地去逐个查看每一个文件的类型信息,示例如下:

1
2
3
4
5
6
7
8
9
10
11
#文件中含有三个待查文件, 我们故意设置了一个不存在的文件, 位于最后一个
[roc@roclinux ~]$ cat poetry_list.txt
/root/book/poetry.txt
/root/book/poetry_s.txt
Nothing.txt

#使用-f选项执行file命令
[roc@roclinux ~]$ file -f poetry_list.txt
/root/book/poetry.txt: ASCII text
/root/book/poetry_s.txt: symbolic link to `poetry.txt'
Nothing.txt: ERROR: cannot open `Nothing.txt ' (No such file or directory)

其他的各种指令,大家也可以去尝试,比如-L,当用软链接的时候不会直接返回文件类型,而是返回的是symbolic link to XXX,所以加-L就可以知道它是哪个类型了。

参考

file命令_Linux file命令:查看文件信息或类型

常见的HTTP状态码(HTTP Status Code)

2开头 (请求成功)表示成功处理了请求的状态代码。
200 (成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
201 (已创建) 请求成功并且服务器创建了新的资源。
202 (已接受) 服务器已接受请求,但尚未处理。
203 (非授权信息) 服务器已成功处理了请求,但返回的信息可能来自另一来源。
204 (无内容) 服务器成功处理了请求,但没有返回任何内容。
205 (重置内容) 服务器成功处理了请求,但没有返回任何内容。
206 (部分内容) 服务器成功处理了部分 GET 请求,流视频直播一般返回206

3开头 (请求被重定向)表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。

300 (多种选择) 针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。
301 (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
303 (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。
304 (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
305 (使用代理) 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。
307 (临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

4开头 (请求错误)这些状态代码表示请求可能出错,妨碍了服务器的处理。
400 (错误请求) 服务器不理解请求的语法。
401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
403 (禁止) 服务器拒绝请求。
404 (未找到) 服务器找不到请求的网页。
405 (方法禁用) 禁用请求中指定的方法。
406 (不接受) 无法使用请求的内容特性响应请求的网页。
407 (需要代理授权) 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。
408 (请求超时) 服务器等候请求时发生超时。
409 (冲突) 服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。
410 (已删除) 如果请求的资源已永久删除,服务器就会返回此响应。
411 (需要有效长度) 服务器不接受不含有效内容长度标头字段的请求。
412 (未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。
413 (请求实体过大) 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
414 (请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。
415 (不支持的媒体类型) 请求的格式不受请求页面的支持。
416 (请求范围不符合要求) 如果页面无法提供请求的范围,则服务器会返回此状态代码。
417 (未满足期望值) 服务器未满足”期望”请求标头字段的要求。

5开头(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。

500 (服务器内部错误) 服务器遇到错误,无法完成请求。
501 (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。

Linux cksum的使用详解

cksum命令是检查文件的CRC是否正确,确保文件从一个系统传输到另一个系统的过程中不被损坏。这种方法要求校验和在源系统中被计算出来,在目的系统中又被计算一次,两个数字进行比较,如果校验和相等,则该文件被认为是正确传输了。
注意:CRC是指一种排错检查方法,即循环冗余校验法。
指定文件交由cksum命令进行校验后,会返回校验结果供用户核对文件是否正确无误。若不指定任何文件名称或是所给予的文件名为”-“,则cksum命令会从标准输入设备中读取数据。

语法

cksum [–help][–version][文件…]

参数

  • –help:在线帮助。
  • –version:显示版本信息。
  • 文件…:需要进行检查的文件路径

实例

1
2
3
4
5
6
7
8
╭─FQY@bogon ~/Desktop/hello
╰─$ cksum hello # 命令执行后,将输出校验码等相关的信息
4294967295 0 hello
╭─FQY@bogon ~/Desktop/hello
╰─$ vim hello # 因为hello文件是空的,所以字节数为0,这时候给hello里面添加数据并保存
╭─FQY@bogon ~/Desktop/hello
╰─$ cksum hello # 再一次执行命令,这时候看到字节数是36。"4090568956"表示校验码
4090568956 36 hello

注意:如果文件中有任何字符被修改,都将改变计算后CRC校验码的值。

Linux 系统目录结构

登录系统后,在当前命令窗口下输入命令:

1
2
3
[root@hardwareupdate ~]# ls
git log mysqlbkup.sh pip-9.0.1 Python-3.4.1 s3fs-fuse anaconda-ks.cfg get-pip.py install.log.syslog mewe.bak1 nohup.out pip-9.0.1-py2.py3-none-any.whl Python-3.6.2
[root@hardwareupdate ~]#

树状目录结构

以下是对这些目录的解释:

  • /bin:
    bin是Binary的缩写, 这个目录存放着最经常使用的命令。
  • /boot:
    这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
  • /dev :
    dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
  • /etc:
    这个目录用来存放所有的系统管理所需要的配置文件和子目录。
  • /home:
    用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
  • /lib:
    这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
  • /lost+found:
    这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
  • /media:
    linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
  • /mnt:
    系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
  • /opt:
    这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
  • /proc:
    这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
  • /root:
    该目录为系统管理员,也称作超级权限者的用户主目录。
  • /sbin:
    s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
  • /selinux:
    这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
  • /srv:
    该目录存放一些服务启动之后需要提取的数据。
  • /sys:

这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。

sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。
该文件系统是内核设备树的一个直观反映。

当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

  • /tmp:
    这个目录是用来存放一些临时文件的。
  • /usr:
    这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
  • /usr/bin:
    系统用户使用的应用程序。
  • /usr/sbin:
    超级用户使用的比较高级的管理程序和系统守护程序。
  • /usr/src:
    内核源代码默认的放置目录。
  • /var:
    这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
  • /run:
    是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
/etc:上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。
值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。

/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里

Linux 修改文件权限命令chmod、chgrp、chown详解

Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。
文件或目录的访问权限分为只读,只写和可执行三种。以文件为例,只读权限表示只允许读其内容,而禁止对其做任何的更改操作。可执行权限表示允许将该文件作为一个程序执行。文件被创建时,文件所有者自动拥有对该文件的读、写和可执行权限,以便于对文件的阅读和修改。用户也可根据需要把访问权限设置为需要的任何组合。

Linux下chattr命令详解

chattr 可以修改文件属性

有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了。chattr命令的作用很大,通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var目录。lsattr命令是显示chattr命令设置的文件属性

lsattr

lsattr命令是显示chattr命令设置的文件属性