Alien 魔法:RPM 和 DEB 互转

正如我确信,你们一定知道Linux下的多种软件安装方式:使用发行版所提供的包管理系统(aptitude,yum,或者zypper,还可以举很多例子),从源码编译(尽管现在很少用了,但在Linux发展早期却是唯一可用的方法),或者使用各自的低级工具dpkg用于.deb,以及rpm用于.rpm,预编译包,如此这般。

Alien 魔法:RPM 和 DEB 互转
Alien 魔法:RPM 和 DEB 互转

使用Alien将RPM转换成DEB以及将DEB转换成RPM

在本文中,我们将为你介绍alien,一个用于在各种不同的Linux包格式相互转换的工具,其最常见的用法是将.rpm转换成.deb(或者反过来)。

如果你需要某个特定类型的包,而你只能找到其它格式的包的时候,该工具迟早能派得上用场——即使是其作者不再维护,并且在其网站声明:alien将可能永远维持在实验状态。

例如,有一次,我正查找一个用于喷墨打印机的.deb驱动,但是却没有找到——生产厂家只提供.rpm包,这时候alien拯救了我。我安装了alien,将包进行转换,不久之后我就可以使用我的打印机了,没有任何问题。

即便如此,我们也必须澄清一下,这个工具不应当用来转换重要的系统文件和库,因为它们在不同的发行版中有不同的配置。只有在前面说的那种情况下所建议的安装方法根本不适合时,alien才能作为最后手段使用。

最后一项要点是,我们必须注意,虽然我们在本文中使用CentOS和Debian,除了前两个发行版及其各自的家族体系外,据我们所知,alien可以工作在Slackware中,甚至Solaris中。

步骤1:安装Alien及其依赖包

要安装alien到CentOS/RHEL 7中,你需要启用EPEL和Nux Dextop(是的,是Dextop——不是Desktop)仓库,顺序如下:

# yum install epel-release

启用Nux Dextop仓库的包的当前最新版本是0.5(2015年8月10日发布),在安装之前你可以查看http://li.nux.ro/download/nux/dextop/el7/x86_64/上是否有更新的版本。

# rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
# rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

然后再做,

# yum update && yum install alien

在Fedora中,你只需要运行上面的命令即可。

在Debian及其衍生版中,只需要:

# aptitude install alien

步骤2:将.deb转换成.rpm包

对于本次测试,我们选择了date工具,它提供了一系列日期和时间工具用于处理大量金融数据。我们将下载.deb包到我们的CentOS 7机器中,将它转换成.rpm并安装:

Check CentOS Version

检查CentOS版本

# cat /etc/centos-release
# wget http://ftp.us.debian.org/debian/pool/main/d/dateutils/dateutils_0.3.1-1.1_amd64.deb
# alien --to-rpm --scripts dateutils_0.3.1-1.1_amd64.deb

Convert .deb to .rpm package in Linux

在Linux中将.deb转换成.rpm

重要:(请注意alien是怎样来增加目标包的次版本号的。如果你想要无视该行为,请添加-keep-version标识)。

如果我们尝试马上安装该包,我们将碰到些许问题:

# rpm -Uvh dateutils-0.3.1-2.1.x86_64.rpm

Install RPM Package

安装RPM包

要解决该问题,我们需要启用epel-testing仓库,然后安装rpmbuild工具来编辑该包的配置以重建包:

# yum --enablerepo=epel-testing install rpmrebuild

然后运行,

# rpmrebuild -pe dateutils-0.3.1-2.1.x86_64.rpm

它会打开你的默认文本编辑器。请转到%files章节并删除涉及到错误信息中提到的目录的行,然后保存文件并退出:

Convert .deb to Alien Version

转换.deb到Alien版

但你退出该文件后,将提示你继续去重构。如果你选择“Y”,该文件会重构到指定的目录(与当前工作目录不同):

# rpmrebuild –pe dateutils-0.3.1-2.1.x86_64.rpm

Build RPM Package

构建RPM包

现在你可以像以往一样继续来安装包并验证:

# rpm -Uvh /root/rpmbuild/RPMS/x86_64/dateutils-0.3.1-2.1.x86_64.rpm
# rpm -qa | grep dateutils

Install Build RPM Package

安装构建RPM包

最后,你可以列出date工具包含的各个工具,也可以查看各自的手册页:

# ls -l /usr/bin | grep dateutils
Alien 魔法:RPM 和 DEB 互转
Alien 魔法:RPM 和 DEB 互转

验证安装的RPM包

步骤3:将.rpm转换成.deb包

在本节中,我们将演示如何将.rpm转换成.deb。在一台32位的Debian Wheezy机器中,让我们从CentOS 6操作系统仓库中下载用于zsh shell的.rpm包。注意,该shell在Debian及其衍生版的默认安装中是不可用的。

# cat /etc/shells
# lsb_release -a | tail -n 4
Alien 魔法:RPM 和 DEB 互转
Alien 魔法:RPM 和 DEB 互转

检查Shell和Debian操作系统版本

# wget http://mirror.centos.org/centos/6/os/i386/Packages/zsh-4.3.11-4.el6.centos.i686.rpm
# alien --to-deb --scripts zsh-4.3.11-4.el6.centos.i686.rpm

你可以安全地无视关于签名丢失的信息:

Convert .rpm to .deb Package

将.rpm转换成.deb包

过了一会儿后,.deb包应该已经生成,并可以安装了:

# dpkg -i zsh_4.3.11-5_i386.deb

Install RPM Converted Deb Package

安装RPM转换来的Deb包

安装完后,你看看可以zsh是否添加到了合法shell列表中:

# cat /etc/shells
Alien 魔法:RPM 和 DEB 互转
Alien 魔法:RPM 和 DEB 互转

确认安装的Zsh包

小结

在本文中,我们已经解释了如何将.rpm转换成.deb及其反向转换,这可以作为这类程序不能从仓库中或者作为可分发源代码获得的最后安装手段。你一定想要将本文添加到书签中,因为我们都需要alien。

请自由分享你关于本文的想法,写到下面的表单中吧。


via: http://www.tecmint.com/convert-from-rpm-to-deb-and-deb-to-rpm-package-using-alien/

作者:Gabriel Cánepa 译者:GOLinux 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

细说 Data URI

细说 Data URI
细说 Data URI

Data URL 早在 1995 年就被提出,那个时候有很多个版本的 Data URL Schema 定义陆续出现在 VRML 之中,随后不久,其中的一个版本被提上了议案——将它做个一个嵌入式的资源放置在 HTML 语言之中。从 RFC 文档定稿的时间来看(1998年),它是一个很受欢迎的发明。

Data URI 定义的内容可以作为小文件被插入到其他文档之中。URI 是 uniform resource identifier 的缩写,它定义了接受内容的协议以及附带的相关内容,如果附带的相关内容是一个地址,那么此时的 URI 也是一个 URL (uniform resource locator),如:

ftp://10.1.1.10/path/to/filename.ext
http://example.com/source/id

协议后面的内容,可以告诉客户端一个准确下载资源的地址,而 URI 并不一定包含一个地址信息,如(demo):

data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0jvb29t/f3//Ub//ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAARe8L1Ekyky67QZ1hLnjM5UUde0ECwLJoExKcppV0aCcGCmTIHEIUEqjgaORCMxIC6e0CcguWw6aFjsVMkkIr7g77ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7

其协议为 data,并告诉客户端将这个内容作为 image/gif 格式来解析,需要解析的内容使用的是 base64 编码。它直接包含了内容但并没有一个确定的资源地址。

格式

Data URI 的格式十分简单,如下所示:

data:[][;charset=][;base64],
  • 第一部分是 data: 协议头,它标识这个内容为一个 data URI 资源。

  • 第二部分是 MIME 类型,表示这串内容的展现方式,比如:text/plain,则以文本类型展示,image/jpeg,以 jpeg 图片形式展示,同样,客户端也会以这个 MIME 类型来解析数据。

  • 第三部分是编码设置,默认编码是 charset=US-ASCII, 即数据部分的每个字符都会自动编码为 %xx,关于编码的测试,可以在浏览器地址框输入分别输入下面两串内容,查看效果:

    // output: ä½ å¥½ -> 使用默认的编码展示,故乱码
    data:text/html,你好
    // output: 你好 -> 使用 UTF-8 展示
    data:text/html;charset=UTF-8,你好
    // output: 浣犲ソ -> 使用 gbk 展示(浏览器默认编码 UTF-8,故乱码)
    data:text/html;charset=gbk,你好
    // output: 你好 -> UTF-8 编码,内容先使用 base64 解码,然后展示
    data:text/html;charset=UTF-8;base64,5L2g5aW9 
  • 第四部分是 base64 编码设定,这是一个可选项,base64 编码中仅包含 0-9,a-z,A-Z,+,/,=,其中 = 是用来编码补白的。

  • 最后一部分为这个 Data URI 承载的内容,它可以是纯文本编写的内容,也可以是经过 base64编码 的内容。

很多时候我们使用 data URI 来呈现一些较长的内容,如一串二进制数据编码、图片等,采用 base64 编码可以让内容变得更加简短。而对图片来说,在 gzip 压缩之后,base64 图片实际上比原图 gzip 压缩要大,体积增加大约为三分之一,所以使用的时候需要权衡。

兼容性

由于出现时间较早,目前主流的浏览器基本都支持 data URI:

  • Firefox 2+
  • Opera 7.2+
  • Chrome (所有版本)
  • Safari (所有版本)
  • Internet Explorer 8+

但是部分浏览器对 data URI 的使用存在限制:

  • 长度限制,长度超长,在一些应用下会导致内存溢出,程序崩溃

    Opera 下限制为 4100 个字符,目前已经去掉了这个限制
    IE 8+ 下限制为 32,768 个字符(32kb),IE9 之后移除了这个限制
  • 在 IE 下,data URI 只允许被用到如下地方:

    • object (images only)
    • img、input type=image、link
    • CSS 中允许使用 URL 声明的地方,如 background
  • 在 IE 下,Data URI 的内容必须是经过编码转换的,如 “#”、”%”、非 US-ASCII 字符、多字节字符等,必须经过编码转换

低版本IE的解决之道 – MHTML

MHTML 就是 MIME HTML,是 “Multipurpose Internet Mail Extensions HyperText Markup Language” 的简称,它就像一个带着附件的邮件一般,如下所示:

/** FilePath: http://example.com/test.css */
/*!@ignore
Content-Type: multipart/related; boundary="_ANY_SEPARATOR"

--_ANY_SEPARATOR
Content-Location:myidBackground
Content-Transfer-Encoding:base64

iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==
--_ANY_SEPARATOR--
*/

.myid {
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==");
  *background-image: url(mhtml:http://example.com/test.css!myidBackground);
}

上方的一串注释就像是一个附件,这个附件内容是一个名叫 myidBackgroundbase64 编码图片,在一个 class 叫做 myid 的 css 中用到了它。这里有几点需要注意:

  • _ANY_SEPARATOR 可以是任意内容
  • 在”附件”结束位置需要加上结束符 _ANY_SEPARATOR,否则在 Vista 和 Win7 的 IE7 中会出错
  • 附件代码注意不要被压缩工具给干掉了

这里存在一个坑:部分系统兼容模式下的 IE8 也认识 css 中的 hack 符号 *,但是不支持 mhtml,所以上面的内容不会生效。处理方案估计就只有使用 IE 的条件注释了。

HTTPS 下的安全提示

HTTPS 打开页面,当在 IE6、7 下使用 data URIs 时,会看到如下提醒:

MS 的解释是:

您正在查看的网站是个安全网站。它使用了 SSL (安全套接字层)或 PCT(保密通讯技术)这样的安全协议来确保您所收发信息的安全性。 当站点使用安全协议时,您提供的信息例如姓名或信用卡号码等都经过加密,其他人无法读取。然而,这个网页同时包含未使用该安全协议的项目

很明显,IE 嗅到了”未使用安全协议的项目”。

浏览器在解析到一个 URI 的时候,会首先判断协议头,如果是以 http(s) 开头,它便会建立一个网络链接下载资源,如果它发现协议头为data:,便会将其作为一个 Data URI 资源进行解析。

但是从 chrome 的瀑布流,我们可以做这样的猜测:

图中每个 Data URI 都发起了请求,不过状态都是 data(from cache),禁用缓存之后,依然如此。所以可以断定,浏览器在下载源码解析成 DOM 的时候,会将 Data URI 的资源解析出来,并缓存在本地,最后 Data URI 每个对应位置都会发起一次请求,只是这个请求还未建立链接,就被发现存在缓存的浏览器给拍死了。

安全阀门

Data URI 在 IE 下有诸多安全限制,事实上,很多 xss 注入也可以将 data URI 的源头作为入口,使用 data URI 绕过浏览器的过滤。

// 绕过浏览器过滤
http://example.com/text.php?t=">

使用这些去重加密工具来备份你的数据

无论是体积还是价值,数据都在不断增长。快速而可靠地备份和恢复数据正变得越来越重要。社会已经适应了技术的广泛使用,并懂得了如何依靠电脑和移动设备,但很少有人能够面对丢失重要数据的现实。在遭受数据损失的公司中,30% 的公司将在一年内损失一半市值,70% 的公司将在五年内停止交易。这更加凸显了数据的价值。

随着数据在体积上的增长,提高存储利用率尤为重要。从计算机的角度说,数据去重是一种特别的数据压缩技术,因为它可以消除重复数据的拷贝,所以这个技术可以提高存储利用率。

数据并不仅仅只有其创造者感兴趣。政府、竞争者、犯罪分子、偷窥者可能都热衷于获取你的数据。他们或许想偷取你的数据,从你那里进行敲诈,或看你正在做什么。因此,对于保护你的数据,加密是非常必要的。

所以,解决方法是我们需要一个可以去重的加密备份软件。

对于所有的用户而言,做文件备份是一件非常必要的事,至今为止许多用户还没有采取足够的措施来保护他们的数据。一台电脑不论是工作在一个合作的环境中,还是供私人使用,机器的硬盘可能在没有任何警告的情况下挂掉。另外,有些数据丢失可能是人为的错误所引发的。如果没有做经常性的备份,数据也可能不可避免地丢失,即使请了专业的数据恢复公司来帮忙。

使用这些去重加密工具来备份你的数据
使用这些去重加密工具来备份你的数据

这篇文章将对 6 个去重加密备份工具进行简要的介绍。

Attic

Attic 是一个可用于去重、加密,验证完整性的压缩备份程序,它是用 Python 写的。Attic 的主要目标是提供一个高效且安全的方式来备份数据。Attic 使用的数据去重技术使得它适用于每日备份,因为只需存储改变的数据。

其特点有:

  • 易用
  • 可高效利用存储空间,通过检查冗余的数据,对可变块大小的去重可以减少存储所用的空间
  • 可选的数据加密,使用 256 位的 AES 加密算法。数据的完整性和可靠性使用 HMAC-SHA256 来校验
  • 使用 SDSH 来进行离线备份
  • 备份可作为文件系统来挂载

网站: attic-backup.org

Borg

Borg 是 Attic 的一个分支。它是一个安全的开源备份程序,被设计用来高效地存储那些新的或修改过的数据。

Borg 的主要目标是提供一个高效、安全的方式来存储数据。Borg 使用的数据去重技术使得它适用于每日备份,因为只需存储改变的数据。认证加密使得它适用于存储在不完全可信的位置。

Borg 由 Python 写成。Borg 于 2015 年 5 月被创造出来,是为了解决让新的代码或重大的改变带入 Attic 的困难。

其特点包括:

  • 易用
  • 可高效利用存储空间,通过检查冗余的数据,对可变块大小的去重被用来减少存储所用的空间
  • 可选的数据加密,使用 256 位的 AES 加密算法。数据的完整性和可靠性使用 HMAC-SHA256 来校验
  • 使用 SDSH 来进行离线备份
  • 备份可作为文件系统来挂载

Borg 与 Attic 不兼容。

网站: borgbackup.github.io/borgbackup

Obnam

Obnam (OBligatory NAMe) 是一个易用、安全的基于 Python 的备份程序。备份可被存储在本地硬盘或通过 SSH SFTP 协议存储到网上。若使用了备份服务器,它并不需要任何特殊的软件,只需要使用 SSH 即可。

Obnam 通过将数据分成数据块,并单独存储它们来达到去重的目的,每次通过增量备份来生成备份,每次备份的生成就像是一次新的快照,但事实上是真正的增量备份。Obnam 由 Lars Wirzenius 开发。

其特点有:

  • 易用
  • 快照备份
  • 数据去重,跨文件,然后生成备份
  • 可使用 GnuPG 来加密备份
  • 向一个单独的仓库中备份多个客户端的数据
  • 备份检查点 (创建一个保存点,以每 100MB 或其他容量)
  • 包含多个选项来调整性能,包括调整 lru-size 或 upload-queue-size
  • 支持 MD5 校验算法来识别重复的数据块
  • 通过 SFTP 将备份存储到一个服务器上
  • 同时支持 push(即在客户端上运行) 和 pull(即在服务器上运行)

网站: obnam.org

Duplicity

Duplicity 以 tar 文件格式增量备份文件和目录,并使用 GnuPG 来进行加密,同时将它们上传到远程(或本地)的文件服务器上。它可以使用 ssh/scp、本地文件获取、rsync、 ftp 和 Amazon S3 等来传递数据。

因为 duplicity 使用了 librsync, 增量存档可以高效地利用存储空间,且只记录自从上次备份依赖改变的那部分文件。由于该软件使用 GnuPG 来加密或对这些归档文件进行进行签名,这使得它们免于服务器的监视或修改。

当前 duplicity 支持备份删除的文件,全部的 unix 权限,目录,符号链接, fifo 等。

duplicity 软件包还包含有 rdiffdir 工具。 Rdiffdir 是 librsync 的 rdiff 针对目录的扩展。它可以用来生成对目录的签名和差异,对普通文件也有效。

其特点有:

  • 使用简单
  • 对归档进行加密和签名(使用 GnuPG)
  • 高效使用带宽和存储空间,使用 rsync 的算法
  • 标准的文件格式
  • 可选择多种远程协议
    • 本地存储
    • scp/ssh
    • ftp
    • rsync
    • HSI
    • WebDAV
    • Amazon S3

网站: duplicity.nongnu.org

ZBackup

ZBackup 是一个通用的全局去重备份工具。

其特点包括:

  • 对存储数据并行进行 LZMA 或 LZO 压缩,在一个仓库中,你还可以混合使用 LZMA 和 LZO
  • 内置对存储数据的 AES 加密
  • 能够删除旧的备份数据
  • 可以使用 64 位的滚动哈希算法,使得文件冲突的数量几乎为零
  • 仓库中存储的文件是不可修改的,已备份的文件不会被修改。
  • 用 C++ 写成,只需少量的库文件依赖
  • 在生成环境中可以安全使用
  • 可以在不同仓库中进行数据交换而不必再进行压缩
  • 使用 64 位改进型 Rabin-Karp 滚动哈希算法

网站: zbackup.org

bup

bup 是一个用 Python 写的备份程序,其名称是 “backup” 的缩写。基于 git packfile 文件格式, bup 提供了一个高效的方式来备份一个系统,提供快速的增量备份和全局去重(在文件中或文件里,甚至包括虚拟机镜像)。

bup 在 LGPL 版本 2 协议下发行。

其特点包括:

  • 全局去重 (在文件之间或文件内部,甚至包括虚拟机镜像)
  • 使用一个滚动的校验和算法(类似于 rsync) 来将大文件分为多个数据块
  • 使用来自 git 的 packfile 文件格式
  • 直接写入 packfile 文件,以此提供快速的增量备份
  • 可以使用 “par2” 冗余来恢复冲突的备份
  • 可以作为一个 FUSE 文件系统来挂载你的 bup 仓库

网站: bup.github.io


via: http://www.linuxlinks.com/article/20150628060000607/BackupTools.html

译者:FSSlc 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-5887-1.html

Linux:Linux 运维工程师的十个基本技能点

本人是linux运维工程师,对这方面有点心得,现在我说说要掌握哪方面的工具吧。

说到工具,在行外可以说是技能,在行内我们一般称为工具,就是运维必须要掌握的工具。我就大概列出这几方面,这样入门就基本没问题了。

Linux系统如果是学习可以选用RedHat或CentOS,特别是CentOS在企业中用得最多。当然还会有其它版本的,但学习者还是以这2个版本学习就行,因为这两个版本都是兄弟,没区别的,有空可以再研究一下SUSE,有些公司也喜欢用,例如我公司 。

工具如下:

Linux:Linux 运维工程师的十个基本技能点
Linux:Linux 运维工程师的十个基本技能点

1、linux系统基础

这个不用说了,是基础中的基础,连这个都不会就别干了,参考书籍,可以看鸟哥linux基础篇,至少要掌握这书60%内容,没必须全部掌握,但基本命令总得会吧。

2、网络服务

服务有很多种,每间公司都会用到不同的,但基础的服务肯定要掌握,如FTP, DNS,SAMBA, 邮件, 这几个大概学一下就行。

LAMP和LNMP是必须要熟练,我所指的不是光会搭建,而是要很熟悉里面的相当配置才行,因为公司最关键的绝对是WEB服务器,所以nginx和apache要熟悉,特别是nginx一定要很熟悉才行。有些公司还会用tomcat,这个也最好学一下。

其实网络服务方面不用太担心,一般公司的环境都已经搭建好,就算有新服务器或让你整改,公司会有相应的文档让你参照来弄,不会让你乱来的,但至少相关的配置一定要学熟,而且肯定是编译安装多,那些模块要熟悉一下他的作用,特别是PHP那些模块。

这面2点只是基础,也是必要条件,不能说是工具,下以才是真正的要掌握的工具。

3、shell脚本和另一个脚本语言

shell是运维人员必须具备的,不懂这个连入职都不行,至少也要写出一些系统管理脚本,最简单也得写个监控CPU,内存比率的脚本吧,这是最最最基本了。别以为会写那些猜数字和计算什么数的,这些没什么作用,只作学习意义,写系统脚本才是最有意义。

而另一个脚本语言是可选的,一般是3P,即Python,Perl和PHP,PHP就不需要考虑了,除非你要做开发,我个人建议学Python会比较好,不难实现自动化运维,Perl是文本处理很强大,反正这两个学一个就行了。

4、sed和awk工具

必须要掌握,在掌握这两个工具同时,还要掌握正则表达式,这个就痛苦了,正则是最难学的表达式,但结合到sed和awk中会很强大,在处理文本内容和过滤WEB内容时十分有用,不过在学shell的同时一般会经常结合用到的,所以学第3点就会顺便学第4点。

5、文本处理命令

sort , tr , cut, paste, uniq, tee等,必学,也是结合第3点时一并学习的。

6、数据库

首选MySQL,别问我为什么不学SQL Server和Oracle,因为Linux用得最多绝对是MySQL。增删改查必学,特别要学熟查,其它方面可能不太需要,因为运维人员使用最多还是查,哪些优化和开发语句不会让你弄的。

7、防火墙

不学不行,防火墙也算是个难点,说难不难,说易不易,最重要弄懂规则。如果学过CCNA的朋友可能会比较好学,因为iptables也有NAT表,原理是一样的,而Filter表用得最多,反正不学就肯定不合格。

8、监控工具

十分十分重要,我个人建议,最好学这3个,cacti,nagios,zabbix。企业用得最多应该是nagios和 zabbix,反正都学吧,但nagios会有点难,因为会涉及到用脚本写自动监控,那个地方很难。

9、集群和热备

这个很重要,肯定要懂的,但到了公司就不会让你去弄,因为新手基本不让你碰。集群工具有很多,最好学是LVS,这是必学,最好也学学nginx集群,反向代理。还有热备,这个就更多工具能实现了,像我公司是自己开发热备工具的,MySQL热备也要学,就是主从复制,这个别告诉我容易,其实不容易的,要学懂整个流程一点也不容易,只照着做根本没意思。

10、数据备份

不学不行,工具有很多,但至少要把RAID的原理弄懂,特别是企业最常用的1+0或0+1,自己做实验也要弄出来,备份工具有很多,如tar, dump, rsync等,最好多了解一下。

算了,说到这10点已经够你受了,应该可以入门了,因为有些技术会比较难学。例如apache和nginx中还有些很重要的技术,如系统调优和服务优化,还有程序优化,这些在没接触工作前很难学习到的,所以先把这10点学了吧。估计要学熟至少3个月不止,就脚本那部分已经让你很吃力了。我建议是先学熟shell,等工作后再学另一门脚本语言,这样会比较好。以上就是踏入linux运维工程师需要掌握的工具,其实还有很多工具要掌握的,但你在学习环境中是很难学到,最后我再提醒一下,这里所指的工具相当于技能,而不是像windows或ubuntu那些图形化工具,那些工具没用的,还有,学linux就别装图形界面,这样虚拟机就不用吃太多内存,而且绝对不建议在真机上装linux,根本达不到学习效果。

来源:http://bbs.51cto.com/thread-1087414-1.html

Linux:Linux 有问必答:如何在桌面版 Ubuntu 中用命令行更改系统代理设置

问题: 我经常需要在桌面版 Ubuntu 中更改系统代理设置,但我不想通过繁琐的 GUI 菜单点击:”系统设置” -> “网络” -> “网络代理”。在命令行中有更方便的方法更改桌面版的代理设置吗?

在桌面版 Ubuntu 中,它的桌面环境设置,包括系统代理设置,都存储在 DConf 数据库,这是简单的键值对存储。如果你想通过系统设置菜单修改桌面属性,更改会持久保存在后端的 DConf 数据库。在 Ubuntu 中更改 DConf 数据库有基于图像用户界面和非图形用户界面的两种方式。系统设置或者 dconf-editor是访问 DConf 数据库的图形方法,而 gsettingsdconf就是能更改数据库的命令行工具。

下面介绍如何用 gsettings从命令行更改系统代理设置。

Linux:Linux 有问必答:如何在桌面版 Ubuntu 中用命令行更改系统代理设置
Linux:Linux 有问必答:如何在桌面版 Ubuntu 中用命令行更改系统代理设置

gsettings读写特定 Dconf 设置的基本用法如下:

更改 DConf 设置:

$ gsettings set   

读取 DConf 设置:

$ gsettings get  

通过命令行更改系统代理设置为手动

桌面版 Ubuntu 中下面的命令会更改 HTTP 代理设置为 “my.proxy.com:8000″。

$ gsettings set org.gnome.system.proxy.http host 'my.proxy.com'
$ gsettings set org.gnome.system.proxy.http port 8000
$ gsettings set org.gnome.system.proxy mode 'manual'

如果你还想更改 HTTPS/FTP 代理为手动,用这些命令:

$ gsettings set org.gnome.system.proxy.https host 'my.proxy.com'
$ gsettings set org.gnome.system.proxy.https port 8000
$ gsettings set org.gnome.system.proxy.ftp host 'my.proxy.com'
$ gsettings set org.gnome.system.proxy.ftp port 8000

更改套接字主机设置为手动:

$ gsettings set org.gnome.system.proxy.socks host 'my.proxy.com'
$ gsettings set org.gnome.system.proxy.socks port 8000

上面的更改都只适用于当前的桌面用户。如果你想在系统范围内使用代理设置更改,在 gsettings 命令面前添加 sudo。例如:

$ sudo gsettings set org.gnome.system.proxy.http host 'my.proxy.com'
$ sudo gsettings set org.gnome.system.proxy.http port 8000
$ sudo gsettings set org.gnome.system.proxy mode 'manual'

在命令行中更改系统代理设置为自动

如果你正在使用 自动配置代理 (proxy auto configuration,PAC),输入以下命令更改为 PAC。

$ gsettings set org.gnome.system.proxy mode 'auto'
$ gsettings set org.gnome.system.proxy autoconfig-url http://my.proxy.com/autoproxy.pac

在命令行中清除系统代理设置

最后,清除所有“手动/自动”代理设置,还原为无代理设置:

$ gsettings set org.gnome.system.proxy mode 'none'

via: http://ask.xmodulo.com/change-system-proxy-settings-command-line-ubuntu-desktop.html

作者:Dan Nanni 译者:ictlyh 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-5673-1.html

Linux:没那么神秘:linux下生存实录

事物的选择,不在于它能向你提供什么,而取决你需要什么。窗内的世界充其量算是舒适,窗外的天地那才是五彩斑斓。

    操作系统,大部分人只晓得windows,鲜有人知道linux,一个以稳定、安全、开放为第一准则的操作系统(严格地说应该叫内核)。汉语,全球五分之 一的人以它为母语,是使用人数最多的一门语言;英语,世界各地都有人使用,是使用范围最广的一门语言。windows与linux,就好像汉语与英 语,windows,几乎占据了整个桌面领域,是装机量最多系统;linux,从深海潜艇到空中无人侦察机、从半间屋大的工作站到比手掌还小的手机、从远 至美国南卡罗来纳州的google服务器到近到客厅的机顶盒,你都能见到linux身影。     我无意说服你抛弃目前娴熟使用的操作系统另寻新欢,但,假如你对当前系统保守封闭早已不满,假如你崇尚自由、渴求本质、热爱折腾,不妨试试linux!

【发行套件】

linux本身还算不上操作系统,它仅是内核(一方面管理协调下层的硬件资源,一方面为上层软件提供基础服务支撑),需搭配系统软件(shell、编译器、包管理器、桌面环境等等)、应用软件(办公软件、网页浏览器、视频播放器、图片编辑器等等)才能成为一套具备日常使用功能的操作系统,即,发行套件。

一、发行套件的选择

linux发行套件数量庞大(约140种)、用途迥异(如,专供盲人使用的、专供教育培训使用的、专用于家庭影院使用的),对每个发行套件逐一评测、比对选优,完全是费神耗时、意义不大。目前,知名的发行套件包括:puppyslackwaredebianfedoraarchgentooubuntulfsopensuse等,它们各具特色、追随者众,如,slackware是目前存活时间最长的古董级发行套件(经验丰富),fedoraredhat进行新技术实验的发行套件(技术创新),ubuntu号称用户零配置开箱即用的发行套件(简单易用)、lfslinuxfrom scratch)让你从无到有构建专属于你的发行套件(配置灵活)、经验丰富+技术创新+简单易用+配置灵活=opensuse!(-_-#

opensuse最早是slackware在德国的本地化版本,后来因其加入了大量特色功能升格为单独的发行套件,其原名为suselinux10.2版本后改名opensuseopensuse是由novell公司赞助、社区推动的发行套件,它的相关源码和技术可由novell使用,作为novell企业版发行套件sles的基础。opensuse旨在:a、推进linux在全球广泛使用;b、降低linux使用门槛,成为易于上手的发行套件;c、成为技术黑客和软件开发人员的首选平台。opensuselogo是只可爱的变色龙,以此象征opensuse灵活、敏捷的特性。

logo

opensuse当前正式版本为12.1,下个版本12.2预计在129月中旬发布。关于发行套件版本升级,通常我会在最新正式版放出后半年左右再考虑,原因有二:一方面经过半年的大规模外部用户测试,大部分bug已被发现并修正,一定程度上规避了使用系统的不稳定性;一方面各类应用软件开发人员有足够时间针对新版本的发行套件进行功能升级和兼容性优化,让我真真正正感受到新版本带来的各项提升。所以,今年暂时不升级了,明年3月份再考虑。

二、发行套件的安装

既然是普通用户使用的发行套件,其势必继承了某种桌面环境以便用户通过可视化界面操作计算机(linux最底层由x.org提供图形图像服务,中间由桌面环境负责统一管理各应用软件发起的图形绘制请求并协调x.org予以响应)。opensuse12.1提供gnomekde两种桌面环境供君选择(此外,还有xfcelxdeederox等等其他桌面环境可单独下载安装)。gnome是隶属gnu项目的子项目,全称为thegnu network object model environment,采用gtk(由c语言编写)作为底层开发库;kde全称kooldesktopenvironment,采用qt(由c++语言编写)作为底层开发库。gnomekdelinux中最为流行的桌面环境,从操作习惯和界面风格来看,我更喜欢gnome。因此,本文将以采用gnomeopensuse12.1为例进行后文讲解。

1、下载镜像。访问http://software.opensuse.org/121/en,选择gnome32位(或64位视情况而定)直接下载即可;

2、制作安装uu盘安装既节省光盘介质费用,又能大幅提升安装速度,逐渐成为你安装系统的首选。官网上提供了制作opensuse安装u盘的工具imagewriter,分为windows版本(https://github.com/downloads/opensuse/kiwi/imagewriter.exe)和linux版本。windows版有个小bug,下载的镜像文件扩展名为iso,而imagewriter在选择镜像文件时只能识别扩展名为raw的文件,所以需要先调整镜像文件扩展名才能正常写入u盘;

3、安装系统。整个过程一路next,除了几个关键点稍加留意外,基本零难度(注,安装过程中,部分窗口过小,无法查看窗口中完整内容,可用鼠标拖动窗口边框以调整合适大小)。

1)时区设置。如果你是冏朝公民,按下图设置,其中必须勾选“将硬件时钟设置为utc”,否则时间有问题。

(时区设置)

2)创建分区。建议依次创建如下分区:/swap/home/data。说明几点,alinux的分区不同于windows,分区后没有所谓的c:d:盘,而是一个个文件系统,这些文件系统没有具体名称,必须先挂载到某个目录(称之为挂载点)下才能正常使用,每个分区对应一个目录,但多个目录可能对应在同个分区中(如,/home/yangyang_gnu

/home可能都在通过分区上);b)操作系统为扩展物理内存容量通常设有“虚拟内存”机制,将不活波内存页(如,未关闭但长时间没使用的程序)从物理内存中移至硬盘的虚拟内存中,从而释放宝贵的物理内存空间,swap分区就是所谓的虚拟内存,一般大小等同于物理内存,swap分区不用挂载目录;c)用户相关信息(如,各应用程序的配置文件)通常放在/home目录中,为避免重装系统导致各类配置文件丢失,需将/home放在独立分区上;d)所有非系统数据(如,歌曲、ebook、安装程序)都放在独立分区/data上,以便定期备份。按提示操作后,界面类似如下:

(硬盘分区)

3)安装前确认。正式安装系统前,可对先前安装设置信息进行确认、调整。如下图所示:

(安装前确认)

4)系统引导设置。opensuse为防止因异常导致系统无法正常启动,除安装“真正操作系统”之外,还附带安装了所谓的“紧急启动镜像”,个人觉得意义不大,如果不需要,可点击“booting”,可删除紧急启动镜像:

(紧急启动镜像)

另外,双击opensuse12.1(真正的操作系统),参照如下设置,分别取消启动时硬盘检查和设置字符模式下的分辨率:

(引导设置:取消硬盘检查、设置字符模式分辨率)

此外,进入“bootloader installation”->“boot loaderoptions”,取消引导程序等待用户选择操作系统耗时:

(引导设置:取消引导等待)

三、发行套件的设置

刚装好的操作系统都是默认设置,按个人习惯适当调整才贴心。

1、升级系统linux上系统升级分两部分,一部分是内核升级,一部分是发行套件升级(即,除内核外的驱动程序、系统软件、应用软件等升级)。升级内核是为了享受新内核带来的安全增强以及更多的设备支持,由于涉及内核编译等高级主题,另文详讲;在进行发行套件升级前,先说说软件仓库。

前 面说过,发行套件是集成内核、驱动程序、系统软件、应用程序等一整套可支撑普通用户日常工作、生活需求的操作系统,可见,发行套件充当了软件筛选、软件打 包、软件依赖库测试、软件兼容性测试等多个角色,为确保发行套件的健壮性,发行套件厂商(或社区)将它筛选、打包、测试过的软件放在官方软件仓库中,这 样,不论哪个厂商开发的应用程序,用户只需到软件仓库中查找、下载、安装即可,不用(像windows)再到各个软件官网逐一下载,当然,软件仓库中没有的,你仍可到软件官网单独下载,但要注意依赖库是否正确。

软件仓库一般放在发行套件官方服务器上,用户通过更新源访问软件仓库。因此,更新源就是软件仓库的路牌。冏朝的网络是具有社会主义特色滴,要么无法访问国外、要么满如蜗牛,给我们访问国外官方的软件仓库带来很大阻碍。幸好,国内还有几家上规模又有良心的it企 业,通过它们自身带宽优势,准实时地从发行套件官网同步软件仓库到国内服务器上,冏朝用户可调整更新源,实现从这些企业的服务器上高速访问软件仓库。目前 为各大发行套件建立国内软件仓库的企业主要包括搜狐和网易(感谢张总、丁总对中国开源事业的支持,曹总、马总你们人影呢),另外,各大专院校也建有本地软 件仓库,学生朋友可参照使用。好了,了解了软件仓库、更新源等概念后,我们可以按如下步骤升级发行套件啦:

1)更改更新源。运行yast->softwarerepositories,删除所有来之官网的更新源(即,opensuse.org相关的),增加搜狐的软件仓库镜像:asohu-opensuse-12.1-osshttp://mirrors.sohu.com/opensuse/distribution/12.1/repo/oss

bsohu-opensuse-12.1-non-osshttp://mirrors.sohu.com/opensuse/distribution/12.1/repo/non-osscsohu-opensuse-12.1-updatehttp://mirrors.sohu.com/opensuse/update/12.1

2)升级系统。一旦指示系统启动升级,系统先在软件仓库(加载的所有更新源)中寻找是否有升级的可能。具体而言,命令zypperupdate,对于本地已安装程序,在软件仓库中是否有更新版本,若有则更新之,忽略系统有安装但仓库中根本不存在的软件;命令zypperdist-upgrade, 将系统与软件仓库同步一致,也就是说,本地安装的软件必须只能是仓库中有的且版本必须一致,换言之,一旦执行该命令,将存在降级(本地版本高而仓库版本 低)、升级(本地版本低而仓库版本高)、更改软件信息(发行套件官方更改应用软件某些信息)、甚至卸载(本地安装而仓库没有)等几种可能,特别是当你有通 过源码安装过软件时切勿使用该命令。两个命令差异巨大,就日常而言,建议使用前者即可。

2、安装驱动windows环境中增加了硬件,通常需要到硬件官网下载驱动,安装重启后系统才能识别新增硬件设备,linux对驱动的管理,你可以(片面地)理解为全都打包进内核中了,只要是较新版本内核(这正是前面说升级内核的主要目的之一),几乎能正常识别99%的硬件,换言之,你不用针对主板、芯片、(有/无线)网卡、显卡、声卡、甚至g3上网卡(后文将教你如何在linux下使用运营商的上网卡)单独安装驱动,因为内核已经集成了它们的驱动,当然,我指的是集成驱动能很好地管理对应硬件设备,如果管理得不是那么好呢?那就单独安装吧,比如,n卡驱动。opensuse内置了n卡驱动程序的开源版本nouveaunouveau由第三方开发,并未得到nvidia官方支持,是开发人员对n卡官方驱动逆向分析后的重新编码,实现难度巨大,虽效果不尽人意但也值得你尊重。作为普通用户,肯定希望最大程度发挥显卡特性,那就安装n卡针对opensuse发布的(闭源)官方显卡驱动吧。先增加n卡官方更新源ftp://download.nvidia.com/opensuse/12.1,再升级即可。

3、美化桌面。前面提过,我选装的是gnome桌面环境。gnome3相 较先前版本,不论从界面外观还是操作习惯都有非常大的差异,比如,窗口右上角只有关闭按钮,不再有最大化、最小化的概念,比如,托盘从任务栏中剥离出来, 默认情况下为隐藏状态,比如,要选择桌面上的某个窗口,先得调出所有窗口的列表,在点击选择需要的那个,比如,不再有桌面图标,如此这些,让很多人无法适 应、被人诟病。也许是心态问题,我倒是挺适应这种操作模式的,使用gnome3也有一年多时间了,虽谈不上驾轻就熟,但也不存在任何使用障碍,非要让我提一点意见的话,嗯~嗯~,好吧,真心希望gnome开发团队将横向布局的任务栏改为纵向布局,至于原因,你知道,如今的显示器几乎都是宽屏的,这就意味着屏幕的水平空间充裕而垂直空间紧张,现在又将任务栏水平放置在最顶部,进一步缩小了可用垂直空间,所以,强烈建议将任务栏垂直放置在屏幕左侧(效果类似ubuntuunity),希望下一版本能有所改善。另外,个人认为,对于一项新生事务(我说的是gnome3),不妨抱着“拥抱变化、迎接未来”的心态去尝试接纳,或许,你会发现,原来它才是你的最爱。

扯远了,接着说gnome的美化。桌面美化,无非就是选一套符合你审美观的主题,下载、安装、启用即可:

1)下载主题。推荐两个gnome3相关的主题网站:gnome-look.orgdeviantart.com,慢慢选,喜欢哪个下哪个。个人非常喜欢那种扁、平、薄的风格,比如android4.0主题风格,正好又有人将其移植到gnome3上,称之为holohttp://tiheum.deviantart.com/art/holo-80076980),搭配faience系列图标(http://tiheum.deviantart.com/art/faience-icon-theme-255099649

2)安装主题。将上面两个下载后的压缩文件分别解压至~/.themes~/.icons目录。

3)选择主题。运行advancedsettings,参照下图选择窗口和图标主题:

(选择主题)

4)启用主题。键入alt+f2,输入r回车,看到没,刚才选择的主题已经生效。如果存在滚动条粗大、按钮错位等情况,请检查相关主题引擎(murrinepixbufunicoadwaita)是否都已正确安装。最终效果如下:

gnome3-holo

5)字体。opensuse中文显示默认采用文泉驿字体,相比之下,更喜欢微软雅黑那种方方正正的饱满字体,但微软雅黑中的英文字体又不咋地,有人发布了一款增强了英文字体的微软雅黑——yaheiconsolashybrid字体,可以下来试试,效果非常不错(本文全文采用的及时这个字体)。双击字体按提示安装,安装完后进入advancedsettings,按如下设置即可:

(字体设置)

###NextPage###

【应用软件】

说了这么多,作为普通用户,我们关注的还是opensuse如何支撑我们的日常工作、生活需求。接下来看看,那些借助社区力量开发的优秀开源产品。开始之前,请增加第三方更新源packmanftp://packman.inode.at/suse/opensuse_12.1/)。packman相对于发行套件的官方软件仓库有如下“优势”:a)包含大量采用新技术的软件(发行套件追求稳定,从这个角度看,如果引入过多新技术软件,未经过严格兼容性测试,极有可能影响系统稳定性);b)包含大量私有属性的闭源软件(发行套件通常是由社区制作,如果含有闭源软件,可能引入版权、专利问题)。因此,应将packman仓库与官方仓库搭配使用,可扩大用户的软件选择范围。(注,未特别说明,以下介绍的软件均可通过软件仓库查找、下载、安装。)

一、日常办公

现在的企事业单位几乎都需借助电脑办公,医生看病开处方、营业厅办理业务、会计帐务处理等等,电脑已成为各行各业办公的主要途径和手段。下面介绍几类常见的办公需求。

1、办公文书wordexcelpowerpoint等三个软件是windows中必装的办公文书软件,以支撑我们文字处理、表格制作、汇报演示等工作需要。linux中我们对应有writercalcimpress等软件,这三个软件(外加drawmathbase)就是大名鼎鼎的libreoffice套件。libreoffice完全兼容ms-office文档,甚至还可以直接转存为pdf格式文件,

  • 软件名称:libreoffice

  • 界面截图:

writer

calc

impress

  • 设置调整:tools->options->languagesettings->writing aids,取消options中的所有选项,以禁止拼写检查;

2、电邮收发。 很多人习惯通过邮件服务提供商官网进行邮件收发,强烈建议改用邮件客户端,避免频繁登录邮箱,同时,还能离线查阅邮件内容。好的邮件客户端除了正常

Linux:Linux Netcat 命令——网络工具中的瑞士军刀

netcat是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据。通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它。使用netcat命令所能完成的事情令人惊讶。

netcat所做的就是在两台电脑之间建立链接并返回两个数据流,在这之后所能做的事就看你的想像力了。你能建立一个服务器,传输文件,与朋友聊天,传输流媒体或者用它作为其它协议的独立客户端。

下面是一些使用netcat的例子.

[A(172.31.100.7) B(172.31.100.23)]

Linux netcat 命令实例:

1,端口扫描

端口扫描经常被系统管理员和黑客用来发现在一些机器上开放的端口,帮助他们识别系统中的漏洞。

$nc -z -v -n 172.31.100.7 21-25

可以运行在TCP或者UDP模式,默认是TCP,-u参数调整为udp.

z 参数告诉netcat使用0 IO,连接成功后立即关闭连接, 不进行数据交换(谢谢@jxing 指点)

v 参数指使用冗余选项(译者注:即详细输出)

n 参数告诉netcat 不要使用DNS反向查询IP地址的域名

这个命令会打印21到25 所有开放的端口。Banner是一个文本,Banner是一个你连接的服务发送给你的文本信息。当你试图鉴别漏洞或者服务的类型和版本的时候,Banner信息是非常有用的。但是,并不是所有的服务都会发送banner。

一旦你发现开放的端口,你可以容易的使用netcat 连接服务抓取他们的banner。

$ nc -v 172.31.100.7 21

netcat 命令会连接开放端口21并且打印运行在这个端口上服务的banner信息。

2,Chat Server

假如你想和你的朋友聊聊,有很多的软件和信息服务可以供你使用。但是,如果你没有这么奢侈的配置,比如你在计算机实验室,所有的对外的连接都是被限制的,你怎样和整天坐在隔壁房间的朋友沟通那?不要郁闷了,netcat提供了这样一种方法,你只需要创建一个Chat服务器,一个预先确定好的端口,这样子他就可以联系到你了。

Server

$nc -l 1567

netcat 命令在1567端口启动了一个tcp 服务器,所有的标准输出和输入会输出到该端口。输出和输入都在此shell中展示。

Client

$nc 172.31.100.7 1567

不管你在机器B上键入什么都会出现在机器A上。

3,文件传输

大部分时间中,我们都在试图通过网络或者其他工具传输文件。有很多种方法,比如FTP,SCP,SMB等等,但是当你只是需要临时或者一次传输文件,真的值得浪费时间来安装配置一个软件到你的机器上嘛。假设,你想要传一个文件file.txt 从A 到B。A或者B都可以作为服务器或者客户端,以下,让A作为服务器,B为客户端。

Server

$nc -l 1567 < file.txt

Client

$nc -n 172.31.100.7 1567 > file.txt

这里我们创建了一个服务器在A上并且重定向netcat的输入为文件file.txt,那么当任何成功连接到该端口,netcat会发送file的文件内容。

在客户端我们重定向输出到file.txt,当B连接到A,A发送文件内容,B保存文件内容到file.txt.

没有必要创建文件源作为Server,我们也可以相反的方法使用。像下面的我们发送文件从B到A,但是服务器创建在A上,这次我们仅需要重定向netcat的输出并且重定向B的输入文件。

B作为Server

Server

$nc -l 1567 > file.txt

Client

nc 172.31.100.23 1567 < file.txt

4,目录传输

发送一个文件很简单,但是如果我们想要发送多个文件,或者整个目录,一样很简单,只需要使用压缩工具tar,压缩后发送压缩包。

如果你想要通过网络传输一个目录从A到B。

Server

$tar -cvf – dir_name | nc -l 1567

Client

 

$nc -n 172.31.100.7 1567 | tar -xvf -

这里在A服务器上,我们创建一个tar归档包并且通过-在控制台重定向它,然后使用管道,重定向给netcat,netcat可以通过网络发送它。

在客户端我们下载该压缩包通过netcat 管道然后打开文件。

如果想要节省带宽传输压缩包,我们可以使用bzip2或者其他工具压缩。

Server

 

$tar -cvf – dir_name| bzip2 -z | nc -l 1567

通过bzip2压缩

Client

 

$nc -n 172.31.100.7 1567 | bzip2 -d |tar -xvf -

使用bzip2解压

5. 加密你通过网络发送的数据

如果你担心你在网络上发送数据的安全,你可以在发送你的数据之前用如mcrypt的工具加密。

服务端

$nc localhost 1567 | mcrypt –flush –bare -F -q -d -m ecb > file.txt

使用mcrypt工具加密数据。

客户端

$mcrypt –flush –bare -F -q -m ecb < file.txt | nc -l 1567

使用mcrypt工具解密数据。

以上两个命令会提示需要密码,确保两端使用相同的密码。

这里我们是使用mcrypt用来加密,使用其它任意加密工具都可以。

Linux:Debian 7.0 常见问题的处理方法

  随着社区Linux版本Debian7.0.0稳定版的发布,笔者也和很多Linux系统的爱好者一样,进行了下载以及安装使用。现就存在的一些小问题及解决办法进行整理编辑,希望能帮助更多的Linux爱好者们一同感受Linux操作系统带来的稳定以及魅力。

https://dn-linuxcn.qbox.me/data/attachment/album/201305/23/122831c3x2gxfjrg2cw8c1.jpg

1、时区设置问题

  Debian 7.0 在安装时尽管选择了中国时区以及非UTC时钟,但机器安装好启动后时间还是会发生错误,因此需要进行将时钟调整为当前时间,同时需要修改文件/etc/default/rcS,并在该文件中加入UTC=no参数。

2、普通用户使用KVM报错问题

  Debian 7.0 中普通用户使用virt-manager虚拟系统管理器时会报错,但切换到root用户又可以正常使用。其实这个问题是用户权限的问 题,virt-manager虚拟系统管理器需要libvirt组用户才可以正常使用和管理,因此用户只要执行useradd -g libvirt birdofprey 命令就可以正常使用该虚拟机管理工具了。

  命令模式如下:

useradd -g libvirt birdofprey

  其中birdofprey为需要使用virt-manager虚拟系统管理器工具的用户名。

3、在KVM中客户机使用NAT方式联网无法正常进行PPTP拨号以及FTP问题

  在KVM中客户机之前使用桥模式进行网络连接,PPTP拨号及FTP都没有问题,修改为NAT模式之后,KVM客户机使用PPTP拨号出现619错 误,访问FTP服务器也出现无法登录500错误。该问题存在的原因是因为PPTP方式的VPN使用了GRE协议,这个协议跟TCP/UDP是同一级的协 议。因为GRE协议没有端口的概念,LINUX不能像TCP/UDP那样IP伪装。所以,LINUX网关后面的pptp vpn客户机连接vpn时总会遇见这种那种的问题。也就是所谓pptp pass through  PPTP VPN协议 NAT穿透性问题!,解决该问题需要对Debian7的/etc/modules文件进行修改加入如下行内容:

    ip_nat_pptp     ip_conntrack_pptp     ip_conntrack_ftp     ip_nat_ftp

  这样iptables在每次启动的时候都自动加载以上4个NAT穿透功能模块。再次在KVM客户机中以NAT模式网络进行相关的PPTP拨号及FTP访问时早先存在的619及500错误得到解决。

4、GNOME3任务栏、标题栏过宽问题

  Debian 7.0 默认安装的是GNOME 3.4.2桌面系统,缺省状态下,用户会发现桌面系统的桌面任务栏及标题栏宽度太大,影响美观,同时也浪费屏幕显示的有效宽度,针对这个问题我们可以通过以下方式进行优化。

  任务栏优化:

  使用vi /usr/share/gnome-shell/theme/gnome-shell.css,直接找到如下行:

    #panel {     background-color: black;     font-weight: bold;     height: 1.28em;     }

  将原来的height:1.68em;修改为height:1.28em;按ALT+F2输入r,直接从起桌面应该就很好看了。

  标题栏的优化:

  在终端中直接输入如下内容:

    sed -i “/title_vertical_pad/s/value=\”[0-9]\{1,2\}\”/value=\”0\”/g” /usr/share/themes/Adwaita/metacity-1/metacity-theme-3.xml

  之后按ALT+F2输入r,直接从起桌面应该就好了。

5、安装GNOME-SHELL插件netspeed、Coverflow Alt-Tab网站报You do not appear to have an up to date version of GNOME3. You won’t be able to install extensions from here. See the about pagefor more information.错误问题。

  GNOME-SHELL作为GNOME3桌面系统的重要特性之一,给用户带来了很多不一样的感受和体验,其插件安装在3.6以后非常方便,只需要通过网页登录到网站将相应插件的相应开关打开到ON的位置,那么系统将自动为你在本地系统中创建插件功能。但在Debian 7.0 中,因为GNOME版本为GNOME3.4.2,通过网页访问网站时, 网站会报如下提示You do not appear to have an up to date version of GNOME3. You won’t be able to install extensions from here. See the about pagefor more information。因此安装以上两个插件包需要进行手动安装。

  首先在https://github.com/hedayaty/NetSpeed、https://github.com/dmo60 /CoverflowAltTab下载相关软件组建的ZIP包,将他们解压在用户的.local/share/gnome-shell /extensions/ 目录中,并将文件目录设置为XXX@XXX.XX模式,然后用tweak tool开启就行了。

来自:http://os.51cto.com/art/201305/395213.htm

Linux:Linux上如何通过 OpenVPN 建立安全的远程连接【下】

欢迎你们回来继续看我们的 OpenVPN 系列的下篇。上次我们讲到如何让远端计算机(如笔记本电脑)通过简单的加密隧道登录到家里的服务器。今天我们接着讲进阶部分:比如设置 OpenVPN 开机启动,省得我们每次重启服务器的时候都要手动开启 OpenVPN 服务;比如使用 Network Manager 简化访问到远程服务器的过程。

整合到 Network Manager

Network Manager 是一个不错的 OpenVPN 客户端;你只需要安装 network-manager-openvpn 这个插件。我们继续上篇使用的配置。打开 Network Manager 配置界面,进入“新建 VPN 连接”的窗口。这个界面布局在 KDE 和 GNOME 下面看起来有点不一样,但是大体的信息是一样的。开始的时候你需要选择 OpenVPN 作为你的 VPN 连接类型,就像图1所示;如果你没看到 OpenVPN 的选项,说明你没有安装好插件。(图1是一张 GNOME 下面的图片。)

Linux:Linux上如何通过 OpenVPN 建立安全的远程连接【下】
Linux:Linux上如何通过 OpenVPN 建立安全的远程连接【下】

*图1:在 Network Manager 上新建 OpenVPN 客户端 *

图2显示了配置主界面。从上到下分别为:

  • 连接名,随便取一个。
  • 远程服务器的网关。
  • 下拉菜单选择静态密钥(Static Key)。
  • 然后通过文件浏览器找到静态密钥文件。
  • 这个不是方向性的密钥,所以 Key Direction 这里设为 None。
  • 远程 IP 和 本地 IP 是我们在上一部分已经设置好的虚拟 OpenVPN 地址,可分别通过 /etc/openvpn/studio.conf 和 /etc/openvpn/shop.conf 文件获得。
  • 我们无需设置密码,所以“Show passwords”复选框为空。
  • 这个VPN连接是“所有人都可用”,还是只有你可用,随你喜欢。
Linux:Linux上如何通过 OpenVPN 建立安全的远程连接【下】
Linux:Linux上如何通过 OpenVPN 建立安全的远程连接【下】

图2:Network Manager 配置 OpenVPN 客户端主界面

保存然后就可以使用 Network Manager 建立连接了。So easy,妈妈再也不用担心我的学习了!看见图3了么?你现在只需点击一下高亮的按钮就可以连接到你的家庭服务器,或从你的家庭服务器中断开连接。

OpenVPN 开机启动

手动开启 OpenVPN 很简单,但是你也许想要更简单,让它能够在服务器重启的时候跟着自动启动。在 Debian/Ubuntu 以及绝大部分发行版中,当你安装完 OpenVPN 的时候就被设置为开机启动的。所以你需要重启系统,或者按下面的方法启动后台进程:

$ sudo /etc/init.d/openvpn start $ sudo service openvpn start 

第一个命令是比较老的启动方法,第二个命令使用了“service”命令。“service”命令第一次出现在 Red Hat 发行版中,如果你的发行版中没有安装这个命令,你需要从你的软件源里面去找到它。

Ubuntu 使用 Upstart 管理服务进程,Debain 使用的老的 SysV,而 Fedora 使用“systemd”。如果你在 /etc/openvpn 目录下配置了多个 OpenVPN 的服务,你可以通过“systemd”的命令启动你要的服务:

# systemctl start openvpn@studio.service 

这里的“studio.service”与我们在上篇讲过的例子中的 /etc/openvpn/studio.conf 配置的服务相对应。用这些方法启动的后台进程,在系统重启后会失效,所以这些方法都和上篇讲的启动方式一样,仅能使 OpenVPN 运行一次。你可以将启动 OpenVPN 进程的任务交给 chkconfig:

# service openvpn start # chkconfig openvpn on 

上面列出的是启动 OpenVPN 后台进程最常见的方式,这个命令启动了一整个进程,而不是对 /etc/openvpn/下面的所有 .conf 配置文件都维护一个进程。systemd 支持chkconfig 以及 service 命令,所以上面两条命令能够正常工作。然而使用 systemd 的发行版非常多,如果你的工作环境和我们的不一样,请通过发表评论的方式通知我们。

强化你的连接

OpenVPN 的健壮性足够维持一条持久的连接,即使服务宕掉。而你可以令这个连接变得更加稳定,只需要在服务器端和客户端的 .conf 文件内添加下面两条属性:

persist-tun persist-key 

这两条属性对于那些笔记本电脑用户来说非常有用,他们的电脑会因为电源保护或需要移来移去而经常断开 OpenVPN 的连接。

现在,该做些什么?

你已经完成了所有设置,并且你的服务工作正常,你接下来能用这个干点什么?如果你以前一直用 OpenSSH 来远程你的服务器,你会有这样的思维定势:你可以利用 OpenVPN 登录到远程机器,然后跑上面的应用。你要是那样做,就太浪费 OpenVPN 了。你可以将 OpenVPN 想像成是一条虚拟的以太网电缆接到你的服务器上或者是你的局域网内,这条电缆还包着厚厚的加密保护。你可以在它提供的隧道上跑任何加密的或不加密的服务,并且只需要在防火墙上开一个端口。

所以你可以利用 OpenVPN 隧道来建立 SSH 连接,然后远程到服务器,然后在服务器上跑应用。你可以访问到网络资源,比如文件共享和 Web 应用。你可以强制让你的电脑通过 VPN 隧道访问到网络,但我认为你会想要同时能够使用本地网络和 VPN 网络的。

所以,在你的笔记本上你可以上网冲浪,使用 SSH,做你想做的任何事,上你想上的任何网络。当你想利用 OpenVPN 隧道做一些事情时,你只需要打开它,然后输入 IP 地址:

$ ssh carla@10.0.0.1

对于一些 Web 服务,操作也简单:让你的 Web 浏览器访问到 OpenVPN 的 IP 地址然后登录进去。举个例子,我在我家的服务器上跑了多个 Web 服务做测试,我可以通过http://10.0.0.1/drupal访问 Drupal,可以通过http://10.0.0.1/owncloud访问 OwnCloud。我电脑上有优秀的图形界面 FTP 客户端 gFTP,所以只需要填入 IP 地址、用户名、密码就能访问到 FTP 服务器,或者使用下面的命令:

$ ftp 10.0.0.1 21

你可以远程管理你的 MySQL 数据库,输入帐号密码:

$ mysql -h 10.0.0.1 -u admin -p

所以最重要的是你要知道怎么去配置一个你想要玩的功能。

很显然,当我们使用名称服务(name service)时,会比直接使用 IP 地址更方便。所以某一天我们可以学学如何在 OpenVPN 上布署一个名称服务。现在,先享受一下 OpenVPN 带给你的乐趣吧。


via: http://www.linux.com/learn/tutorials/745233-how-to-set-up-secure-remote-networking-with-openvpn-on-linux-part-2

译者:bazz2 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

来源:https://linux.cn/article-2287-1.html

python实现的简单FTP上传下载文件实例

python实现的简单FTP上传下载文件是如何来实现的呢?下面的内容将会通过具体的实例来演示python实现的简单FTP上传下载文件的实现方法及相关技巧:

本文实例讲述了python实现的简单FTP上传下载文件的方法。分享给大家供大家参考。具体如下:

python本身自带一个FTP模块,可以实现上传下载的函数功能。

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
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from ftplib import FTP
def ftp_up(filename = "20120904.rar"):
  ftp=FTP()
  ftp.set_debuglevel(2)
  #打开调试级别2,显示详细信息;0为关闭调试信息
  ftp.connect('192.168.0.1','21')
  #连接
  ftp.login('admin','admin')
  #登录,如果匿名登录则用空串代替即可
  #print ftp.getwelcome()
  #显示ftp服务器欢迎信息
  #ftp.cwd('xxx/xxx/')
  #选择操作目录
  bufsize = 1024
  #设置缓冲块大小
  file_handler = open(filename,'rb')
  #以读模式在本地打开文件
  ftp.storbinary('STOR %s' % os.path.basename(filename),file_handler,bufsize)
  #上传文件
  ftp.set_debuglevel(0)
  file_handler.close()
  ftp.quit()
  print "ftp up OK"
def ftp_down(filename = "20120904.rar"):
  ftp=FTP()
  ftp.set_debuglevel(2)
  ftp.connect('192.168.0.1','21')
  ftp.login('admin','admin')
  #print ftp.getwelcome()
  #显示ftp服务器欢迎信息
  #ftp.cwd('xxx/xxx/')
  #选择操作目录
  bufsize = 1024
  filename = "20120904.rar"
  file_handler = open(filename,'wb').write
  #以写模式在本地打开文件
  ftp.retrbinary('RETR %s' % os.path.basename(filename),file_handler,bufsize)
  #接收服务器上文件并写入本地文件
  ftp.set_debuglevel(0)
  file_handler.close()
  ftp.quit()
  print "ftp down OK"

python实现的简单FTP上传下载文件就是这样,欢迎大家参考。。。。