课程咨询 :13623629309

太原PHP培训 > 达内新闻 > 太原php培训:“懒惰” Linux 管理员的 10 个关键技巧(二)
  • 太原php培训:“懒惰” Linux 管理员的 10 个关键技巧(二)

    发布:太原PHP培训      来源:伯乐在线      时间:2016-08-01

  • 从本意讲,这称为 “在防火墙上砸一个洞”。我称之为 SSH 后门。为了使用它,必须有一台作为中介的连接到 Internet 的机器。

    在本例中,将这样台机器称为 blackbox.example.com。公司防火墙后面的机器称为 ginger。此技术支持的机器称为 tech。图 4 解释了设置过程。

    图 4. 在防火墙上砸一个洞

    太原达内php培训班

    以下是操作步骤:

    检查什么是允许做的,但要确保您问对了人。大多数人都担心您打开了防火墙,但他们不明白这是完全加密的。而且,必须破解外部机器才能进入公司内部。不过,您可能属于 “敢作敢为” 型的人物。自己进行判断应该选择的方式,但不如意时不抱怨别人。

    使用 -R 标记通过 SSH 从 ginger 连接到 blackbox.example.com。假设您是 ginger 上的根用户,tech 需要根用户 ID 来帮助使用系统。使用 -R 标记将 blackbox 上端口 2222 的说明转发到 ginger 的端口 22 上。这就设置了 SSH 通道。注意,只有 SSH 通信可以进入 ginger:您不会将 ginger 放在无保护的 Internet 上。可以使用以下语法实现此操作:~# ssh -R 2222:localhost:22 thedude@blackbox.example.com进入 blackbox 后,只需一直保持登录状态。我总是输入以下命令:thedude@blackbox:~$ while [ 1 ]; do date; sleep 300; done

    使机器保持忙碌状态。然后最小化窗口。

    现在指示 tech 上的朋友使用 SSH 连接到 blackbox,而不需要使用任何特殊的 SSH 标记。但必须把密码给他们:root@tech:~# ssh thedude@blackbox.example.com.

    tech 位于 blackbox 上后,可以使用以下命令从 SSH 连接到 ginger:thedude@blackbox:~$: ssh -p 2222 root@localhost

    Tech 将提示输入密码。应该输入 ginger 的根密码。

    现在您和来自 tech 的支持可以一起工作并解决问题。甚至需要一起使用屏幕!(参见 技巧 4)。

    技巧 6:通过 SSH 通道进行远程 VNC 会话

    VNC 或虚拟网络计算已经存在很长时间了。通常,当远程服务器上的某类图形程序只能在此服务器上使用时,我才需要 VNC。

    例如,假设在 技巧 5 中,ginger 是一台存储服务器。许多设备都使用 GUI 程序来管理存储控制器。这些 GUI 管理工具通常需要通过一个网络直接连接到存储服务器,而这个网络有时保存在专用的子网络中。因此,只能通过 ginger 访问这个 GUI。

    可以尝试使用 -X 选项通过 SSH 连接到 ginger 并启动它,但这对带宽要求很高,您需要忍受等待的痛苦。VNC 是一个网络友好的工具,几乎适用于所有操作系统。

    假设设置与技巧 5 中的一样,但希望 tech 能访问 VNC 而不是 SSH。对于这种情况,需要进行一些类似的操作,不过转发的是 VNC 端口。执行以下操作步骤:

    在 ginger 上启动一个 VNC 服务器会话。运行以下命令:root@ginger:~# vncserver -geometry 1024x768 -depth 24 :99这些选项指示启动服务器,分辨率为 1024×768,像素深度为每像素 24 位。如果使用较慢的连接设置,8 也许是更好的选项。使用 :99 指定可访问 VNC 服务器的端口。VNC 协议在 5900 处启动,因此 :99 表示服务器可从端口 5999 访问。启动该会话时,要求您指定密码。用户 ID 与启动 VNC 服务器时的用户相同(本例中就是根用户)。

    从 ginger 连接到 blackbox.example.com 的 SSH 将 blackbox 上的端口 5999 转发到 ginger。这通过运行以下命令在 ginger 中完成:root@ginger:~# ssh -R 5999:localhost:5999 thedude@blackbox.example.com运行此命令后,需要将此 SSH 会话保持为打开状态,以便保留转发到 ginger 的端口。此时,如果在 blackbox 上,那么运行以下命令即可访问 ginger 上的 VNC 会话:thedude@blackbox:~$ vncviewer localhost:99这将通过 SSH 将端口转发给 ginger,但我们希望通过 tech 让 VNC 访问 ginger。为此,需要另一个通道。

    在 tech 中,打开一个通道,通过 SHH 将端口 5999 转发到 blackbox 上的端口 5999。这通过运行以下命令完成:root@tech:~# ssh -L 5999:localhost:5999 thedude@blackbox.example.com这次使用的 SSH 标记为 -L,它不是将 5999 放到 blackbox,而是从中获取。到达 blackbox 后,需要保持此会话为打开状态。现在即可在 tech 中使用 VNC 了!

    在 tech 中,运行以下命令使 VNC 连接到 ginger:root@tech:~# vncviewer localhost:99.Tech 现在将拥有一个直接到 ginger 的 VNC 会话。

    设置虽然有点麻烦,但比为修复存储阵列而四处奔波强多了。不过多实践几次这就变得容易了。

    对 此技巧我还要补充一点:如果 tech 运行的是 Windows® 操作系统,并且没有命令行 SSH 客户端,那么 tech 可以运行 Putty。Putty 可以设置为通过查找侧栏中的选项来转发 SSH 端口。如果端口是 5902 而不是本例中的 5999,则可以输入图 5 中的内容。

    图 5. Putty 可以转发用作通道的 SSH

    太原达内php培训班

    如果进行了此设置,那么 tech 就可以使用 VNC 连接到 localhost:2,如同 tech 正在 Linux 操作系统上运行一样。

    技巧 7:检查带宽

    设想:公司 A 有一个名为 ginger 的存储服务器,并通过名为 beckham 的客户端节点装载 NFS。公司 A 确定他们需要从 ginger 得到更多的带宽,因为有大量的节点需要 NFS 装载 ginger 的共享文件系统。

    实现此操作的最常用和最便宜的方式是将两个吉比特以太网 NIC 组合在一起。这是最便宜的,因为您通常会有一个额外的可用 NIC 和一个额外的端口。

    所以采取此这个方法。不过现在的问题是:到底需要多少带宽?

    吉比特以太网理论上的限制是 128MBit/s。这个数字从何而来?看看这些计算:

    1Gb = 1024Mb;1024Mb/8 = 128MB;”b” = “bits,”、”B” = “bytes”

    但实际看到的是什么呢,有什么好的测量方法呢?我推荐一个工具 iperf。可以按照以下方法获得 iperf:

    # wget http://dast.nlanr.net/Projects/Iperf2.0/iperf-2.0.2.tar.gz

    需要在 ginger 和 beckham 均可见的共享文件系统上安装此工具,或者在两个节点上编译并安装。我将在两个节点均可见的 bob 用户的主目录中编译它:

    tar zxvf iperf*gz

    cd iperf-2.0.2

    ./configure -prefix=/home/bob/perf

    make

    make install

    在 ginger 上,运行:

    # /home/bob/perf/bin/iperf -s -f M

    这台机器将用作服务器并以 MBit/s 为单位输出执行速度。

    在 beckham 节点上,运行:

    # /home/bob/perf/bin/iperf -c ginger -P 4 -f M -w 256k -t 60

    两 个屏幕上的结果都指示了速度是多少。在使用吉比特适配器的普通服务器上,可能会看到速度约为 112MBit/s。这是 TCP 堆栈和物理电缆中的常用带宽。通过以端到端的方式连接两台服务器,每台服务器使用两个联结的以太网卡,我获得了约 220MBit/s 的带宽。

    事实上,在联结的网络上看到的 NFS 约为 150-160MBit/s。这仍然表示带宽可以达到预期效果。如果看到更小的值,则应该检查是否有问题。

    我最近碰到一种情况,即通过连接驱动程序连接两个使用了不同驱动程序的 NIC。这导致性能非常低,带宽约为 20MBit/s,比不连接以太网卡时的带宽还小!

    技巧 8:命令行脚本和实用程序

    Linux 系统管理员通过使用权威的命令行脚本会变得更高效。这包括巧妙使用循环和知道如何使用 awk、grep 和 sed 等的实用程序解析数据。通常这可以减少击键次数,降低用户出错率。

    例如,假设需要为即将安装的 Linux 集群生成一个新的 /etc/hosts 文件。一般的做法是在 vi 或文本编辑器中添加 IP 地址。不过,可以通过使用现有 /etc/hosts 文件并将以下内容追加到此文件来实现。在命令行上运行:

    # P=1; for i in $(seq -w 200); do echo "192.168.99.$P n$i"; P=$(expr $P + 1);

    done >>/etc/hosts

    200 个主机名(n001 到 n200)将由 IP 地址(192.168.99.1 到 192.168.99.200)来创建。手动填充这样的文件有可能会创建重复的 IP 地址或主机名,因此这是使用内置命令行消除用户错误的好例子。请注意,这是在 bash shell(大多数 Linux 发行版的默认值)内完成的。

    再举一个例子,假设要检查 Linux 集群中的各个计算节点中的内存大小是否一样。通常,拥有一个发行版或类似的 shell 是最好的。但是为了演示,以下使用 SSH。

    假设 SSH 设置为不使用密码验证。然后运行:

    # for num in $(seq -w 200); do ssh n$num free -tm | grep Mem | awk '{print $2}';

    done | sort | uniq

    这样的命令行相当简洁。(如果在其中放入正则表达式情况会更糟)。让我们对它进行细分,详细讨论各部分。

    首先从 001 循环到 200。使用 seq 命令的 -w 选项在前面填充 0。 然后替换 num 变量,创建通过 SSH 连接的主机。有了目标主机后,向它发出命令。本例中是:

    free -m | grep Mem | awk '{print $2}'

    这个命令的意思是:

    使用 free 命令获取以兆字节为单位的内存大小。

    获取这个命令的结果,并使用 grep 获取包含字符串 Mem 的行。

    获取那一行并使用 awk 输出第二个字段,它是节点中的总内存。

    在每个节点上执行这个操作。

    在每个节点上执行命令后,200 个节点的整个输出就传送(|d)到 sort 命令,以对所有内存值进行排序。

    最后,使用 uniq 命令消除重复项。这个命令会导致以下情况中的一种:

    如果所有节点(n001 到 n200)拥有相同的内存大小,则只显示一个数字。这个数字就是每个操作系统看到的内存大小。

    如果节点内存大小不同,将会看到几个内存大小的值。

    最后,如果某个节点上的 SSH 出现故障,则会看到一些错误消息。

    这个命令并不是完美无缺的。如果发现与预期不同的内存值,您就不知道是哪一个节点出了问题,或者有多少个节点。为此需要发出另一个命令。

    这个技巧提供了一种查看某些内容的快速方式,而且如果发生错误,您可以立刻知道。其价值在于快速检查。

    技巧 9:控制台侦察

    有些软件会向控制台输出错误消息,而控制台不一定会显示在 SHH 会话中。使用 vcs 设备可以进行检查。在 SSH 会话中,在远程服务器 # cat /dev/vcs1 上运行以下命令。这将显示第一个控制台中的内容。也可以使用 2、3 等查看其他虚拟终端。如果某个用户在远程系统上输入,您将看到他输入的内容。

    在大多数数据场中,使用远程终端服务器、KVM 甚至 Serial Over LAN 是查看这类信息的最好方式;它也提供了带外查看功能的一些好处。使用 vcs 设备能够提供一种快速带内方法,这能节省去机房查看控制台的时间。

    技巧 10:随机系统信息收集

    在 技巧 8 中,介绍了一个使用命令行获取有关系统中总内存信息的例子。在这个技巧中,我将介绍几个其他方法,用于从需要进行验证、故障诊断或给予远程支持的系统收集重要信息。

    首先,收集关于处理器的信息。通过以下命令很容易实现:

    # cat /proc/cpuinfo。

    这个命令给出关于处理器的速度、数量和型号的信息。在许多情况下使用 grep 可以得到需要的值。

    我经常做的检查是确定系统中处理器的数量。因此,如果我买了一台带双核处理器的四核服务器,我可以运行以下命令:

    # cat /proc/cpuinfo | grep processor | wc -l。

    然后我看到值应该是 8。如果不是,我会打电话给供应商,让他们给我派送另一台处理器。

    我需要的另一条信息是磁盘信息。可以使用 df 命令获得。我总是添加 -h 标记,以便看到以十亿字节或兆字节为单位的输出。# df -h 还会显示磁盘的分区情况。

    列表最后是查看系统固件的方式 —— 一个获取 BIOS 级别和 NIC 上的固件信息的方法。

    要检查 BIOS 版本,可以运行 dmidecode 命令。遗憾的是,不能轻易使用 grep 获取信息,所以这不是一个很有效的方法。对于我的 Lenovo T61 laptop,输出如下:

    #dmidecode | less

    ...

    BIOS Information

    Vendor: LENOVO

    Version: 7LET52WW (1.22 )

    Release Date: 08/27/2007

    ...

    这比重启机器并查看 POST 输出有效得多。

    要检查以太网适配器的驱动程序和固件版本,请运行 ethtool:

    # ethtool -i eth0

    driver: e1000

    version: 7.3.20-k2-NAPI

    firmware-version: 0.3-0

    结束语

    可以从精通命令行的人那里学习很多技巧。最好的学习方式是:

    与其他人一起工作。共享屏幕会话并观察其他人是如何工作的 —— 您会发现新的做事方法。可能需要谦虚一点,让其他人引导,不过通常可以学到很多东西。

    阅读手册页。认真阅读手册页,即使是熟知的命令,也能获得更深的见解。例如,您以前可能根本不知道可以使用 awk 进行网络编程。

    解决问题。作为系统管理员,总是要解决问题,不管是您还是其他人引起的问题。这就是经验,经验可以使您更优秀、更高效。

    我 希望至少有一个技巧能帮助您学习到您不知道的知识。像这样的基本技巧可以使您更高效,并且能增长经验,但最重要的是,技巧可以让您有更多的空闲时间去做自 己感兴趣的事情,比如玩电子游戏。最好的管理员比较悠闲,因为他们不喜欢工作。他们能找到完成任务的最快方法,并且能快速完成任务,从而保持休闲的生活。

    达内时代科技集团致力于培养面向电信和金融领域JavaC++C#/.Net3G/Android3G/IOSPHP、嵌入式、软件测试、UID、网络营销、网络工程、会计、UEDwebUnity3D、大数据、童程童美等17大方向中高端软件人才课程与少儿教育课程。选择太原达内培训,不再孤军奋战,轻轻松松做IT高薪白领。太原达内培训带领有明确目标的学子迈向成功之路!想找工作的求职者可以加QQ3373924515(太原达内就业服务部)咨询了解。

上一篇:太原php培训:“懒惰” Linux 管理员的 10 个关键技巧(一)

下一篇:太原php培训班:Linux 系统中一些针对文件系统的节能技巧(上)

最新开班日期  |  更多

php高级开发名企定制班(剩2个名额)

php高级开发名企定制班(剩2个名额)

开班日期:12-29

php高级开发周末班(剩5个名额)

php高级开发周末班(剩5个名额)

开班日期:12-29

php高级开发免费试听(剩5个名额)

php高级开发免费试听(剩5个名额)

开班日期:12-29

更多高级开发工程师精品班

更多高级开发工程师精品班

开班日期:12-29

  • 地址:山西省太原市小店区学府街长治路高新国际A座24层
  • 课程培训电话:13623629309     全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56