22 12
发新话题
打印

ssh运用

ssh运用

http://zh.wikipedia.org/wiki/SSH
来源wiki

SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础上的安全协议。

传统的网络服务程序,如FTP、POP和Telnet其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击。就是存在另一个人或者一台机器冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。

而 SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。透过 SSH 可以对所有传输的数据进行加密,也能够防止 DNS 欺骗和 IP 欺骗。

SSH 之另一项优点为其传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替 Telnet,又可以为FTP、POP、甚至为 PPP 提供一个安全的“通道”。

[编辑] 历史
最初的 SSH 协议是由芬兰的一家公司开发的,但是因为受版权和加密算法等等的限制,现在很多人都转而使用 OpenSSH。OpenSSH 是SSH的替代软件包,而且是开放源代码和免费的。

[编辑] 基本架构
SSH协议框架中最主要的部分是三个协议:

传输层协议(The Transport Layer Protocol):传输层协议提供服务器认证,数据机密性,信息完整性等的支持。
用户认证协议(The User Authentication Protocol):用户认证协议为服务器提供客户端的身份鉴别。
连接协议(The Connection Protocol):连接协议将加密的信息隧道复用成若干个逻辑通道,提供给更高层的应用协议使用。
同时还有为许多高层的网络安全应用协议提供扩展的支持。

各种高层应用协议可以相对地独立于 SSH 基本体系之外,并依靠这个基本框架,通过连接协议使用 SSH 的安全机制。

[编辑] SSH的安全验证
在客户端来看,SSH提供两种级别的安全验证。

第一种级别(基于密码的安全验证),知道帐号和密码,就可以登录到远程主机,并且所有传输的数据都会被加密。但是,可能会有别的服务器在冒充真正的服务器,无法避免被“中间人”攻击。
第二种级别(基于密匙的安全验证),需要依靠密匙,也就是你必须为自己创建一对密匙,并把公有密匙放在需要访问的服务器上。客户端软件会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在你在该服务器的用户根目录下寻找你的公有密匙,然后把它和你发送过来的公有密匙进行比较。如果两个密匙一致,服务器就用公有密匙加密“质询”(challenge)并把它发送给客户端软件。从而避免被“中间人”攻击。
在服务器端,SSH也提供安全验证。 在第一种方案中,主机将自己的公用密钥分发给相关的客户端,客户端在访问主机时则使用该主机的公开密钥来加密数据,主机则使用自己的私有密钥来解密数据,从而实现主机密钥认证,确定客户端的可靠身份。 在第二种方案中,存在一个密钥认证中心,所有提供服务的主机都将自己的公开密钥提交给认证中心,而任何作为客户端的主机则只要保存一份认证中心的公开密钥就可以了。在这种模式下,客户端必须访问认证中心然后才能访问服务器主机。

[编辑] SSH协议的可扩展能力
SSH协议框架中设计了大量可扩展的冗余能力,比如用户自定义算法、客户自定义密钥规则、高层扩展功能性应用协议。这些扩展大多遵循 IANA 的有关规定,特别是在重要的部分,像命名规则和消息编码方面。
乐乎设计,乐乎生活~

TOP

SSH加密通道配置

http://www.williamlong.info/archives/1952.html


安全外壳协议(Secure Shell Protocol / SSH)是一种在不安全网络上提供安全远程登录及其它安全网络服务的协议。最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。

  常用的SSH工具有开源软件PuTTY,支持SSH远程登录的主机可以实现socks5代理服务器的功能,不过在PuTTY中没有配置文件,需要手动设置才能实现,且无法保存,而PuTTY完整版自带的pLink可以实现命令行方式调用PuTTY实现SSH的加密通道。

  具体的方法是,下载这个文件后解压,pLink的调用参数是:plink -C -v -N -pw 密码 -D 本地端口 远程用户@IP或域名:远程希望打开的端口。

  例如,远程IP为: 111.111.111.111,用户名为username,密码为password,本地打开1080端口,远程打开22端口,则使用的命令为:plink -N -D 127.0.0.1:1080 -pw password username@111.111.111.111:22。上面的这条命令可以保存为plink.bat的批处理文件直接双击运行,运行完成后,在Firefox中设置SOCK5为本地IP和端口即可。如果觉得pLink还麻烦,使用MyEntunnel(My Encrypted Tunnel)可以图形化实现这个功能。


下载地址为:
http://www.williamlong.info/download/myentunnel.zip
乐乎设计,乐乎生活~

TOP

http://21pt.com/Article/69.aspx

putty的使用方法~
不错,很详细~
乐乎设计,乐乎生活~

TOP

什么是基于ssh密钥对的自动登录?
配置localbox(ssh客户机)
配置remotebox(ssh服务器)
测试ssh自动登录

什么是基于ssh密钥对的自动登录?

下面从整体上粗略的介绍了 RSA/DSA 密钥的工作原理。让我们从一种假想的情形开始,假定我们想用 RSA 认证允许一台本地的计算机(称作 localbox)打开 remotebox上的一个远程 shell, remotebox 是我们的 ISP 的一台机器。此刻,当我们试图用 ssh 客户程序连接到 remotebox时,我们会得到如下提示:

%
ssh drobbins@remotebox
drobbins@remotebox's password:

此处我们看到的是 ssh 处理认证的缺省方式的一个示例。换句话说,它要求我们输入 remotebox上的 drobbins 这个帐户的密码。如果我们输入我们在 remotebox 上的密码, ssh 就会用安全密码认证协议,把我们的密码传送给 remotebox 进行验证。但是,和 telnet 的情况不同,这里我们的密码是加密的,因此它不会被偷看到我们的数据连接的人截取。一旦 remotebox 把我们提供的密码同它的密码数据库相对照进行认证,成功的话,我们就会被允许登录,还会有一个 remotebox 的 shell 提示欢迎我们。虽然 ssh 缺省的认证方法相当安全,RSA 和 DSA 认证却为我们开创了一些新的潜在的机会。

但是,与 ssh 安全密码认证不同的是,RSA 认证需要一些初始配置。我们只需要执行这些初始配置步骤一次。之后, localbox 和 remotebox 之间的 RSA 认证就毫不费力了。要设置 RSA 认证,我们首先得生成一对密钥,一把专用密钥和一把公用密钥。这两把密钥有一些非常有趣的性质。公用密钥用于对消息进行加密,只有拥有专用密钥的人才能对该消息进行解密。公用密钥只能用于 加密,而专用密钥只能用于对由匹配的公用密钥编码的消息进行 解密。RSA(和 DSA)认证协议利用密钥对的这些特殊性质进行安全认证,并且不需要在网上传输任何保密的信息。

要应用 RSA 或者 DSA 认证,我们要执行一步一次性的配置步骤。我们把 公用密钥拷贝到 remotebox。公用密钥之所以被称作是“公用的”有一个原因。因为它只能用于对那些给我们的消息进行 加密,所以我们不需要太担心它会落入其它人手中。一旦我们的公用密钥已经被拷贝到 remotebox并且为了 remotebox 的 sshd 能够定位它而把它放在一个专门的文件(~/.ssh/authorized_keys)里,我们就为使用 RSA 认证登录到 remotebox上做好了准备。

要用 RSA 登录的时候,我们只要在 localbox 的控制台键入 ssh drobbins@remotebox ,就象我们常做的一样。可这一次, ssh 告诉 remotebox 的 sshd 它想使用 RSA 认证协议。接下来发生的事情非常有趣。 Remotebox 的 sshd 会生成一个随机数,并用我们先前拷贝过去的公用密钥对这个随机数进行加密。然后, sshd 把加密了的随机数发回给正在 localbox 上运行的 ssh 。接下来,轮到我们的 ssh 用 专用密钥对这个随机数进行解密后,再把它发回给 remotebox,实际上等于在说:“瞧,我 确实有匹配的专用密钥;我能成功的对您的消息进行解密!”最后, sshd 得出结论,既然我们持有匹配的专用密钥,就应当允许我们登录。因此,我们有匹配的专用密钥这一事实授权我们访问 remotebox。

配置localbox(ssh客户机)

请用您的用户账户在localbox上登录,并运行命令ssh-keygen -t rsa:
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/myid/.ssh/id_rsa):
Created directory '/home/myid/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/myid/.ssh/id_rsa.
Your public key has been saved in /home/myid/.ssh/id_rsa.pub.
The key fingerprint is:
f1:e8:ae:a7:b3:f6:64:3f:30:34:1f:c5:07:ce:0f:bc myid@localbox

为了实现自动登录, passphrase为空。

注意:由于passphrase为空,生成的私钥必须绝对禁止未授权的访问!

将生成的id_rsa.pub文件复制到remotebox的/home/drobbins/.ssh/目录下。


配置remotebox(ssh服务器)

请以drobbins账户登录。运行以下命令:
cd .ssh
umask 077
cat id_rsa.pub > authorized_keys

测试ssh自动登录

请用您的用户账户在localbox上登录,并运行命令ssh drobbins@remotebox。您应该能够在不输入drobbins@remotebox口令的情况下登录到remotebox。
乐乎设计,乐乎生活~

TOP

putty常用命令

不错~~
http://www.51testing.com/?uid-15 ... space-itemid-113139

正在学习putty,在网上搜了一下,觉得这个对于初学者有些帮助,粘过来看看。


1、cd (文件夹名)--查看路径
2、dir ---查看当前路径下的所有文件
3、unzip ***.zip-----压缩文件到当前目录
4、wget (路径)----下载
5、mv ***   ****----移动或者重命名
6、rm *** *** ----删除一次可以删除多个
7、pwd ----显示当前路径
8、cp ---拷贝

putty命令大全

此文介绍putty软件中shell主要的命令语法以及格式,希望对同学们有所帮助。

Shell命令管理如果你是linux主机,可以运行shell命令。如果你是win xp用户,可以下载putty,利用这个工具,你也可以进行shell管理。先到这里,下载PuTTY0.58cn2 中文版。然后就可以开始管理了。但你必须知道shell命令。下面是我收集的一些shell命令供新手参考。资料来源于网络,不保证全部有效。不过一般不会有什么问题。按说明认真操作就好。
[url=post.php?action=newthread&fid=9&extra=page%3D1#mysqlzidongbeifeng]Mysql自动备份[/url](点击查看)。首先我们得知道什么叫shell.
操作系统与外部最主要的接口就叫做shell,或许这样说过于术语化,for example后你肯定就能够明白:cmd命令行,这是windows操作系统下的一个shell。这里说的dreamhost的shell是指 dreamhost提供给客户一个命令行,方便客户更好的使用他们的虚拟主机服务。
DreamHost中shell使用指南本文中所用的 shell指令及操作均基于Linux ord 2.4.29,即DreamHost现在采用的系统。本人不是计算机专业出身,本指南因此会比较死板,只针对想要使用shell又苦于不知如何下手的新 手,如果你也是DreamHost的用户,那本文或许对你有所帮助。目录:

1. Basic Instructions /基本指令
2. wget /下载工具
3. Crontab /定时任务
4. tar/tar.gz /压缩文件
5. vi /编辑器


cd [目录名] 转换路径

ls 显示当前目录下所有文件

rm [-r]-f[] [文件名] 删除文件,加[-r]可以删除文件下所有子文件

unzip [文件名] 解压文件

wget(没用过,据说是最实用的一个,否则那200G估计每天不掉线才有可能用完)


1. BasicInstructions基本操作命令


通常来说,使用"$[Instructions] --help"可以获得以下各个命令[instructions]的帮助,包含其参数列表的定义。


-ls 列出当前文件夹下所有内容

$ls -o 列出当前文件夹中所有内容,含详细信息,但不列出group

$ls -l 同上,含group信息

$ls -a 列出当前文件夹中所有内容,包含以"."开头的文件

$ls -t 按更改时间排序

$ls -v 按版本先后排序

-cd [dir] 进入文件夹

-pwd 显示当前路径

-mkdir [dir] 新建文件夹

-chmod 更改文件/文件夹权限

$chmod [Mode] [dir],其中Mode形如"755"或"777"等。

$chmod [Mode] [file]

$chmod -R [Mode] [dir],递归形式,即将目标文件夹内所有文件均改变权限

Mode还有另一种表达方式,"755"即为"-rwxr-xr-x",不列举了。

-rm [file] 删除文件/文件夹

$rm -f [file] 强行删除,忽略不存在的文件,无提示

$rm -r [file] 递归删除所有内容

-cp 拷贝

$cp [options] [source] [destination]

其中[options]可以为-f(强行拷贝)或-r(递归拷贝)

-mv 重命名或移动

$mv [options] [source] [destination]

[options]常用:-f(强行移动/重命名), -i(移动/重命名前尝试), -u(更新)


例如

$mv wwwroot/cgi-bin . 将/cgi-bin目录移动到当前目录下


$mv cronfile.txt myfile.txt 将cronfile.txt重命名为myfile.txt


2. wget下载工具


wget是一种非交互式的网络文件下载工具,在linux下可以使用该工具快速地从网络上下载所需要的文件而不需要经由本地硬盘中转,而且速度极快。以下是一些使用方法:


wget [参数列表] URL


最简单的用法:


$wget http://targetdomain.com/file.tar


wget的常用参数:


· -t [nuber of times]:尝试次数,当wget无法与服务器建立连接时,尝试连接多少次。比如"-t120"表示尝试120次。当这一项为"0"的时候,指定尝试无穷多次直到连接成功为止,这个设置非常有用,当对方服务器突然关机或者网络突然中断的时候,可以在恢复正常后继续下载没


有传完的文件;


· -c:断点续传,这也是个非常有用的设置,特别当下载比较大的文件的时候,如果中途意外中断,那么连接恢复的时候会从上次没传完的地方接着传,而不是又从头开始,使用这一项需要远程服务器也支持断点续传,一般来讲,基于UNIX/linux的Web/FTP服务器都支持断点续传;


· -T [number of seconds]:超时时间,指定多长时间远程服务器没有响应就中断连接,开始下一次尝试。比如"-T120"表示如果120秒以后远程服务器没有发过来数据,就重新尝试连接。如果网络速度比较快,这个时间可以设置的短些,相反,可以设置的长一些,一般最多不超过900,通常也不少于60,一般设置在 120左右比较合适;


· -w [number of seconds]:在两次尝试之间等待多少秒,比如"-w 100"表示两次尝试之间等待100秒;


· -nd:不下载目录结构,把从服务器所有指定目录下载的文件都堆到当前目录里;


· -x:与"-nd"设置刚好相反,创建完整的目录结构,例如"wget -nd http://www.gnu.org/ ",实际的目录结构一级一级建下去,直到所有的文件都传完为止;


· -nH:不创建以目标主机域名为目录名的目录,将目标主机的目录结构直接下到当前目录下;· -r:递归下载,在本机建立服务器端目录结构;


· -l [depth]:下载远程服务器目录结构的深度,例如"-l 5"下载目录深度小于或者等于5以内的目录结构或者文件;


· -m:做站点镜像时的选项,如果你想做一个站点的镜像,使用这个选项,它将自动设定其他合适的选项以便于站点镜像;


· -np:只下载目标站点指定目录及其子目录的内容。这也是一个非常有用的选项,我们假设某个人的个人主页里面有一个指向这个站点其他人个人主页的连接,而我们只想下载这个人的个人主页,如果不设置这个选项,甚至--有可能把整个站点给抓下来,这显然是我们通常不希望的;


· --http-user=username


· --http-passwd=password:如果Web服务器需要指定用户名和口令,用这两项来设定;


· -O 将数据写入文件中。


3. Crontab 定时执行任务


在DreamHost系统下, 通过Shell可以建立自己的crontab. 具体使用如下:


使用支持shell登录的终端(如fterm或putty), 地址栏输入username@qiran.org:22即可以SSH方式登录至服务器.


常用的crontab命令:


crontab -l 显示所有现存cron job.


crontab -r 删除当前cron jobs.


crontab -e 编辑当前 "crontab file". DH推荐使用nano


注意你的crontab包含所有的cron jobs, 每个cron一行, 断行结尾. 一个正常的cron如下所示:


45 2 * * * /home/user/script.pl


第一个数字是每小时的第几分钟,

第二个数字是每天的第几小时,

第三个数字是每月的第几天,

第四个数字是每年的第几月,

第五个数字是每周的第几天.


使用方式例如:


32 * * * * : 表示每小时的第32分钟.


12,42 * * * * : 表示每小时的第12及第42分钟两次


*/15 */2 * * *: 表示0:00, 0:15, 0:30, 0:45, 2:00, 2:15, 2:30, ...


43 18 * * 7: 表示每个周日的6:43pm运行命令行.


在DreamHost下使用nano编辑完文件后,使用ctrl+o保存,ctrl+x退出编辑。



4. tar命令

tar命令的使用方法如下:

tar [参数列表] [文件名]


参数列表:


-c 生成新的备份,并同时覆盖旧的备份文件

-x 从备份文件中解压缩

-t 列出备份文件内的文件目录

-v 显示所有被操作文件列表

-f 在指定位置生成备份

-u 将不存在于备份中的文件,或将已经被更改的文件加入该备份中。


举例说明:


tar cvf filename.tar /*制作备份*/

tar cvf tarfile.tar ./filename /*将filename的文件备份到tarfile.tar里面*/

tar tvf filename.tar /*列出tar文档的内容*/

tar xvf filename.tar /*从tar文档中导出文件*/

tar zxpvf filename.tar.gz /*从tar.gz文档中导出文件*/

tar zxvf filename.tar.gz /*同上*/

tar xvf tarfile.tar ./filename /*导出tar文件中的单个文件*/
乐乎设计,乐乎生活~

TOP

用 Hostmonster 主机实现 SSH Tunnel Dongsheng Cai 1:23 pm
回国一个月,受尽了 GFW 的折磨,装了个 Gladder 聊以度日,但限制也很多,比如担心自己的隐私安全,下载不方便,速度缓慢等等,更坏的消息是澳洲也要开始搞网络过滤了,所以得未雨绸缪设置一个 SSH Tunnel。
刚刚买了一年的 Hostmonster 主机就派上了用场,默认情况下 SSH Access 是不开启的,于是跟在线客服联系,让他开通 SSH 支持,并把护照复印件或其它有效证件发给他,然后 SSH 就激活了。
1. 首先在 Hostmonster 的 cPanel 中导入自己的公钥,把私钥存在 ~/.ssh/id_rsa 中,就可以实现无密码登录了
2. 在本地机器上输入:

ssh -N -v -D 8080 -l dongshen dongsheng.org
这就建立了一个本地 socks 代理,在火狐中设置 socks 类代理为 127.0.0.1:8080 就可以使用了。
-N 是禁止执行远程命令
-v 是输出调试信息,用于测试结果
-D 设置转发端口
-l 是自己的登录名

补充:
Linux 上配置无密码登陆
/etc/ssh/sshd_config 里添加 AuthorizedKeysFile %h/.ssh/authorized_keys,在这里添加公钥。
然后在 putty 中使用密钥 Connection->SSH->Auth
乐乎设计,乐乎生活~

TOP

用 Hostmonster 主机实现 SSH Tunnel Dongsheng Cai 1:23 pm
回国一个月,受尽了 GFW 的折磨,装了个 Gladder 聊以度日,但限制也很多,比如担心自己的隐私安全,下载不方便,速度缓慢等等,更坏的消息是澳洲也要开始搞网络过滤了,所以得未雨绸缪设置一个 SSH Tunnel。
刚刚买了一年的 Hostmonster 主机就派上了用场,默认情况下 SSH Access 是不开启的,于是跟在线客服联系,让他开通 SSH 支持,并把护照复印件或其它有效证件发给他,然后 SSH 就激活了。
1. 首先在 Hostmonster 的 cPanel 中导入自己的公钥,把私钥存在 ~/.ssh/id_rsa 中,就可以实现无密码登录了
2. 在本地机器上输入:

ssh -N -v -D 8080 -l dongshen dongsheng.org
这就建立了一个本地 socks 代理,在火狐中设置 socks 类代理为 127.0.0.1:8080 就可以使用了。
-N 是禁止执行远程命令
-v 是输出调试信息,用于测试结果
-D 设置转发端口
-l 是自己的登录名

补充:
Linux 上配置无密码登陆
/etc/ssh/sshd_config 里添加 AuthorizedKeysFile %h/.ssh/authorized_keys,在这里添加公钥。
然后在 putty 中使用密钥 Connection->SSH->Auth
乐乎设计,乐乎生活~

TOP

1.工作平台
客户端:Win2kEn Sp3,Putty Beta 0.53
服务器:RedHat72,OpenSSH_3.4p1

2.Putty简介
一个免费小巧的Win32平台下的ssh客户端。它的主程序只有348k,
但是功能丝毫不逊色于商业的SecureCrt,更重要的是它是免费的。
官方主页:http://www.chiark.greenend.org.uk/~sgtatham/putty/

3.Publick Key认证简介
Publick Key认证的主要魅力在于认证时承诺不必提供密码就能够
同远程系统建立连接。Publick Key认证的基础在于一对密钥,public key
和private key,public key对数据进行加密而且只能用于加密,private key
只能对所匹配的public key加密过的数据进行解密。我们把public key放在
远程系统合适的位置,然后从本地开始进行ssh连接。此时,远程的sshd会产生
一个随机数并用我们产生的public key进行加密后发给本地,本地会用private
key进行解密并把这个随机数发回给远程系统。最后,远程系统的sshd会得出结论
我们拥有匹配的private key允许我们登录。

4.制造密钥
用putty套装的puttygen来产生密钥。密钥的类型建议选择SSH2 RSA,因为用的
最为广泛,大多数server支持。密钥的位数选择1024对大多数用户已经足够,除
非你觉得还是不安全。然后点击"Generator",此时密钥生成当然也有几个选项
出现。如果你有不止一个key,你可以在“Key comment”作注释用于区别其他的key。
“Key passphrase“和“Confirm passphrase“用于对硬盘上的key进行加密,如
过你自己一个人用机器觉得安全有保障的话可以让它们为空。然后保存两个key。
不要关掉puttygen,它还有用呢。

5.输送public key到远程系统
在远程系统自己的目录下建立目录".ssh",然后进入目录建立一个新文件authorized_keys
,然后把puttygen中"Public key for pasting into authorized_keys file"粘贴
于authorized_keys这个文件中。然后执行以下命令:
chmod 700 $HOME/.ssh
chmod 600 $HOME/.ssh/authorized_keys
chmod g-w $HOME $HOME/.ssh $HOME/.ssh/authorized_keys

6.测试
执行putty,建立一个session命名为ssh,设定ip,协议设为ssh,Connection设定ssh的
auth中,private key的文件选择为puttygen产生的密钥。

连接开始后,要求输入username,远程系统开始public key认证,如果密钥有passphrase
则需要输入,否则直接就登录了。

7.说明
如果服务器端使用的是旧版本的Openssh或者www.ssh.com的产品,那么authorized_keys
的设定有所不同,具体看手册了,我这里就不详述了。

第一次写这种东西,错误难免多多,请大家指正。

---------------------------------------------------------------------------------------------

dennis2作品(对上文的补充):

1. 如果 private key 用 passphrase 加了密,可以运行 pageant.exe。运行后,在 system tray 里面就会出现一个戴着帽子的图标。双击这个图标,就会有一个对话框出现。但击 Add Key,然后选择加了密的 private key,单击 Open 后,就会出现另一个对话框问你要这个 private key 的 passphrase。输入 passphrase 并单击 OK 后,在第一个对话框里面就会出现这个 key 的信息,表示这个 key 已经被加上了。

还没有完。打开 putty,load 要用该 key 的 session,然后在左面的菜单里,选择 connection,然后在右面的 Auto-login username 里面填入你的用户名,在 Connection->SSH->Auth->Private key file for authentication 里面,填入上面的 private key 文件(这步与 cAreLeSs 的第 6 步相同)。再回到session,将所作的变化保存下来。从此以后,这个 session 就不会提示输入 password 或 passphrase 了,包括用 psftp 时也是。

2. 如果你还要从这个机器 (cAreLeSs 贴子中的 RedHat72)再 ssh 到其他的有 sshd 的机器(比如说你先 ssh 到防火墙,再 ssh 到防火墙后面的机器上),在上面提到的 Connection->SSH->Auth 里面将 Allow agent forwarding 打上钩(别忘了保存 session),这样再从 RedHat 上 ssh 到别的机器也不需要输入 password 或 passphrase 了。当然,public key 也需要拷贝到其他机器的 $HOME/.ssh/authorized_keys 里面。做了以上修改后,好像要重新启动 pageant 才行。
乐乎设计,乐乎生活~

TOP

http://docs.google.com/View?doci ... en_9734577460382718

putty的中文说明~~不错~~
乐乎设计,乐乎生活~

TOP

linux下Vi编辑器命令大全
时间:2008-01-31 10:12:21  来源:Linux联盟收集整理  作者:

linux下Vi编辑器命令大全(网上找滴)
2007-04-23 18:09/根目录下的文件夹
输入”/”,回车
里面有很多文件夹,如:etc,home,lib,mnt等等
etc:存放用户名和密码
home:每个用户有个文件夹,存放在这里
lib:操作系统文件等
mnt:挂扣用的
opt:java工具
bea:web编程的一些东西
sbin,bin,usr:这三个文件夹都是存放unix的命令的
tmp:临时文件夹
常用的操作:
查看当前目录:pwd
修改密码:passwd
更换模式:csh,bash
远程登陆:telnet 服务器ip
回到上级目录:cd ..
查看该目录下的文件夹:ls
打开文件:vi /文件夹/文件
文件显示的格式:root:x:0:root…:/root;/bin/bash 用户名,加密,序号,组,默认路径
退出:esc shift+: q! quit exit
清空:clear
显示当前目录所有文件:ls –a
显示当前目录所有文件和详细信息:ls –al
新建文件:vi 文件名
文件的权限:chmod g –(+)r w x u g o s
新建文件(不能编辑)更新文件的访问时间,如果存在文件,更新,不存在,建立:touch 文件名
创建目录:mkdir 目录名/目录名
创建多个目录:mkdir 目录名 目录名…..
在主目录创建下目录:mkdir ~/目录名
创建多级目录:mkdir –p 目录名/目录名
在覆盖文件前做个提示:cp –I
文件和文件内容间的拷贝:cp
复制目录:cp –r 目录 目录
复制文件:cp 文件 文件
移动文件:mv 要移动的文件 要移动到的目录
移动目录:mv -fi要移动的目录 要移动到的目录
修改文件或目录的名字:mv 文件 名字
删除文件:rm rm –I提示
删除目录中的所有内容包括目录:rm –r 要删除的文件夹
连接:软连接:相当于创建快捷方式,作用:修改linux内核会用到他 in
硬连接:如果删除源文件,被连接的文件内容还存在
帮助:man 命令
补全名字:table
显示日历:cal
输入:>
输出:<
查看文件内容:cat 例子:cat<文件>文件
分屏显示:ls –l/目录|more
合并到一个新的文件:cat a.txt b.txt
设置环境变量:
csh中 .cshrc source cshrc
bash中 .profile 执行..profile或者source .profile

本编辑器是所有计算机系统中最常用的一种工具。UNIX下的编辑器有ex,sed和vi等,其中,使用最为广泛的是vi,而vi命令繁多,论坛里好像这方面的总结不多,以下稍做总结,以资共享!渴望更正和补充!

进入vi的命令
vi filename :打开或新建文件,并将光标置于第一行首
vi +n filename :打开文件,并将光标置于第n行首
vi + filename :打开文件,并将光标置于最后一行首
vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename
vi filename....filename :打开多个文件,依次进行编辑

移动光标类命令
h :光标左移一个字符
l :光标右移一个字符
space:光标右移一个字符
Backspace:光标左移一个字符
k或Ctrl+p:光标上移一行
j或Ctrl+n :光标下移一行
Enter :光标下移一行
w或W :光标右移一个字至字首
b或B :光标左移一个字至字首
e或E :光标右移一个字至字尾
) :光标移至句尾
( :光标移至句首
}:光标移至段落开头
{:光标移至段落结尾
nG:光标移至第n行首
n+:光标下移n行
n-:光标上移n行
n$:光标移至第n行尾
H :光标移至屏幕顶行
M :光标移至屏幕中间行
L :光标移至屏幕最后行
0:(注意是数字零)光标移至当前行首
$:光标移至当前行尾

屏幕翻滚类命令
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。

插入文本类命令
i :在光标前
I :在当前行首
a:光标后
A:在当前行尾
o:在当前行之下新开一行
O:在当前行之上新开一行
r:替换当前字符
R:替换当前字符及其后的字符,直至按ESC键
s:从当前光标位置处开始,以输入的文本替代指定数目的字符
S:删除指定数目的行,并以所输入文本代替之
ncw或nCW:修改指定数目的字
nCC:修改指定数目的行

删除命令
ndw或ndW:删除光标处开始及其后的n-1个字
do:删至行首
d$:删至行尾
ndd:删除当前行及其后n-1行
x或X:删除一个字符,x删除光标后的,而X删除光标前的
Ctrl+u:删除输入方式下所输入的文本

搜索及替换命令
/pattern:从光标开始处向文件尾搜索pattern
?pattern:从光标开始处向文件首搜索pattern
n:在同一方向重复上一次搜索命令
N:在反方向上重复上一次搜索命令
:s/p1/p2/g:将当前行中所有p1均用p2替代
:n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g:将文件中所有p1均用p2替换

选项设置
all:列出所有选项设置情况
term:设置终端类型
ignorance:在搜索中忽略大小写
list:显示制表位(Ctrl+I)和行尾标志($)
number:显示行号
report:显示由面向行的命令修改过的数目
terse:显示简短的警告信息
warn:在转到别的文件时若没保存当前文件则显示NO write信息
nomagic:允许在搜索模式中,使用前面不带“\”的特殊字符
nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始
mesg:允许vi显示其他用户用write写到自己终端上的信息

最后行方式命令
:n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下
:n1,n2 d :将n1行到n2行之间的内容删除
:w :保存当前文件
:e filename:打开文件filename进行编辑
:x:保存当前文件并退出
:q:退出vi
:q!:不保存文件并退出vi
:!command:执行shell命令command
:n1,n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入
:r!command:将命令command的输出结果放到当前行

寄存器操作
"?nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyw:将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyl:将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字
"?p:取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字
ndd:将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中。

——————————————————————————————————————————————————————————————————————————————————————————

VI的使用
--------------------------------------------------------------------------------


一、插入文本
┌──┬────────────┐
│命令│描述│
├──┼────────────┤
│i │在当前字符前插入文本│
├──┼────────────┤
│I │在行首插入文本 │
├──┼────────────┤
│a │在当前字符后添加文本│
├──┼────────────┤
│A │在行末添加文本│
├──┼────────────┤
│o │在当前行后面插入一空行│
├──┼────────────┤
│O │在当前行前面插入一空行│
├──┼────────────┤
│R │以改写方式输入文本│
└──┴────────────┘
二、移动光标
┌─────┬───────────┐
│命令│描述│
├─────┼───────────┤
│j或下箭头 │向下移动一行│
├─────┼───────────┤
│k或上箭头 │向上移动一行│
├─────┼───────────┤
│h或左箭头 │左移一个字符│
├─────┼───────────┤
│l或右箭头 │右移一个字符│
├─────┼───────────┤
│w │右移一个词│
├─────┼───────────┤
│W │右移一个以空格分隔的词│
├─────┼───────────┤
│b │左移一个词│
├─────┼───────────┤
│B │左移一个以空格分隔的词│
├─────┼───────────┤
│0 │移到行首│
│Ctrl-F│向前翻页│
├─────┼───────────┤
│Ctrl-B│向后翻页│
├─────┼───────────┤
│nG│到第n行 │
├─────┼───────────┤
│G │到最后一行│
└─────┴───────────┘
三、替换文本
┌─────┬──────┐
│命令│描述│
├─────┼──────┤
│$ │到行尾│
├─────┼──────┤
│( │到句子的开头│
├─────┼──────┤
│) │到句子的末尾│
├─────┼──────┤
│{ │到段落的开头│
├─────┼──────┤
│} │到段落的末尾│
└─────┴──────┘

四、删除文本
┌───┬───────────┐
│命令│描述 │
├───┼───────────┤
│r │替换一个字符 │
├───┼───────────┤
│c │修改文本直到按下Esc健 │
├───┼───────────┤
│cw│修改下一个词 │
├───┼───────────┤
│cnw │修改接下来的n个词 │
└───┴───────────┘
五、文本编辑
┌──┬──────────────────────┐
│命寺│描述│
├──┼──────────────────────┤
│yy│将一行文本移到缺省缓冲区中 │
├──┼──────────────────────┤
│yn│将下一个词移到缺省缓冲区中 │
├──┼──────────────────────┤
│ynw │将后面的n个词移到缺省缓冲区中 │
├──┼──────────────────────┤
│p │如果缺省缓冲区中包含一行文本,则在当前│
││行后面插入一个空行井将缺省缓冲区中的声│
││容粘贴到这一行中;如果缺省缓冲区中包含│
││多个词,把这些词粘贴到光标的右边.│
├──┼──────────────────────┤
│P │如果缺省缓冲区中包含一行文本,则正当前 │
│ │行前面插入一个空行井将缺省缓冲区中的内 │
││容粘贴到这一行中;如果缺省缓冲区中包含 │
│ │多个词,把这些词粘贴到光标的左边 │
└──┴──────────────────────┘
六、保存退出
┌───────────┬───────────────┐
│命令│描述│
├───────────┼───────────────┤
│zz│保存并退出│
├───────────┼───────────────┤
│:w filename │写入文件 │
├───────────┼───────────────┤
│:W│写入文件│
├───────────┼───────────────┤
│:x│保存(如果当前文件修改过)并退出│
├───────────┼───────────────┤
│:q! │不保存文件,直接退出 │
├───────────┼───────────────┤
│:q│退出vi│
└───────────┴───────────────┘



VI常用技巧

ideal(2002-01-29 11:24)

〖返回〗〖转发〗

VI命令可以说是Unix/Linux世界里最常用的编辑文件的命令了,但是因为它的命令集众多,很多人都不习惯使用它,其实您只需要掌握基本命令,然后加以灵活运用,就会发现它的优势,并会逐渐喜欢使用这种方法。本文旨在介绍VI的一些最常用命令和高级应用技巧。

一、基本命令介绍

---- 1.光标命令

k、j、h、l——上、下、左、右光标移动命令。虽然您可以在Linux中使用键盘右边的4个光标键,但是记住这4个命令还是非常有用的。这4个键正是右手在键盘上放置的基本位置。
nG——跳转命令。n为行数,该命令立即使光标跳到指定行。
Ctrl+G——光标所在位置的行数和列数报告。
w、b——使光标向前或向后跳过一个单词。
---- 2.编辑命令
i、a、r——在光标的前、后以及所在处插入字符命令(i=insert、a=append、r=replace)。
cw、dw——改变(置换)/删除光标所在处的单词的命令 (c=change、d=delete)。
x、d$、dd——删除一个字符、删除光标所在处到行尾的所有字符以及删除整行的命令。
---- 3.查找命令
---- /string、?string——从光标所在处向后或向前查找相应的字符串的命令。
---- 4.拷贝复制命令
---- yy、p——拷贝一行到剪贴板或取出剪贴板中内容的命令。

二、常见问题及应用技巧

---- 1.在一个新文件中读/etc/passwd中的内容,取出用户名部分。
---- vi file
---- :r /etc/passwd 在打开的文件file中光标所在处读入/etc/passwd
---- :%s/:.*//g 删除/etc/passwd中用户名后面的从冒号开始直到行尾的所有部分。
---- 您也可以在指定的行号后读入文件内容,例如使用命令“:3r /etc/passwd”从新文件的第3行开始读入 /etc/passwd的所有内容。
---- 我们还可以使用以下方法删掉文件中所有的空行及以#开始的注释行。
---- #cat squid.conf.default | grep -v ^$ | grep -v ^#

---- 2.在打开一个文件编辑后才知道登录的用户对该文件没有写的权限,不能存盘,需要将所做修改存入临时文件。
---- vi file
---- :w /tmp/1 保存所做的所有修改,也可以将其中的某一部分修改保存到临时文件,例如仅仅把第20~59行之间的内容存盘成文件/tmp/1,我们可以键入如下命令。
---- vi file
---- :20,59w /tmp/1

---- 3.用VI编辑一个文件,但需要删除大段的内容。
---- 首先利用编辑命令“vi file”打开文件,然后将光标移到需要删除的行处按Ctrl+G显示行号,再到结尾处再按Ctrl+G,显示文件结尾的行号。
---- :23,1045d 假定2次得到的行号为23和1045,则把这期间的内容全删除,也可以在要删除的开始行和结束行中用ma、mb命令标记,然后利用“:a,bd”命令删除。

---- 4.在整个文件的各行或某几行的行首或行尾加一些字符串。
---- vi file
---- :3,$s/^/some string / 在文件的第一行至最后一行的行首插入“some string”。
---- :%s/$/some string/g 在整个文件每一行的行尾添加“some string”。
---- :%s/string1/string2/g 在整个文件中替换“string1”成“string2”。
---- :3,7s/string1/string2/ 仅替换文件中的第3行到第7行中的“string1”成“string2”。
---- 注意: 其中s为substitute,%表示所有行,g表示global。

---- 5.同时编辑2个文件,拷贝一个文件中的文本并粘贴到另一个文件中。
---- vi file1 file2
---- yy 在文件1的光标处拷贝所在行
---- :n 切换到文件2 (n=next)
---- p 在文件2的光标所在处粘贴所拷贝的行
---- :n 切换回文件1

---- 6.替换文件中的路径。
---- 使用命令“:%s#/usr/bin#/bin#g”可以把文件中所有路径/usr/bin换成/bin。也可以使用命令“:%s//usr/bin//bin/g”实现,其中“”是转义字符,表明其后的“/”字符是具有实际意义的字符,不是分隔符。

[ 本帖最后由 happyfan 于 2010-7-5 10:28 编辑 ]
乐乎设计,乐乎生活~

TOP

wget使用技巧

wget 是一个命令行的下载工具。对于我们这些 Linux 用户来说,几乎每天都在使用它。下面为大家介绍几个有用的 wget 小技巧,可以让你更加高效而灵活的使用 wget。

$ wget -r -np -nd http://example.com/packages/
这条命令可以下载 http://example.com 网站上 packages 目录中的所有文件。其中,-np 的作用是不遍历父目录,-nd 表示不在本机重新创建目录结构。

$ wget -r -np -nd --accept=iso http://example.com/centos-5/i386/
与上一条命令相似,但多加了一个 --accept=iso 选项,这指示 wget 仅下载 i386 目录中所有扩展名为 iso 的文件。你也可以指定多个扩展名,只需用逗号分隔即可。

$ wget -i filename.txt
此命令常用于批量下载的情形,把所有需要下载文件的地址放到 filename.txt 中,然后 wget 就会自动为你下载所有文件了。

$ wget -c http://example.com/really-big-file.iso
这里所指定的 -c 选项的作用为断点续传。

$ wget -m -k (-H) http://www.example.com/
该命令可用来镜像一个网站,wget 将对链接进行转换。如果网站中的图像是放在另外的站点,那么可以使用 -H 选项。
乐乎设计,乐乎生活~

TOP

A。使用wget工具

linux所以的主要版本都自带了wget这个下载工具.

bash$ wget http://place.your.url/here

它还能控制ftp来下载整个web站点的各级目录,当然,如果你不小心,可能会把整个网站以及其他和他做链接的网站全部下载下来.

bash$ wget -m http://target.web.site/subdirectory

由于这个工具具有很将的下载能力,所以可以在服务器上把它用作镜像网站的工具.让它按照"robots.txt"的规定来执行.
有很多参数用来控制它如何正确地做镜像,可以限制链接的类型和下载文件的类型等等.例如:只下载有联系的链接并且忽略GIF图片:

bash$ wget -m -L --reject=gif http://target.web.site/subdirectory

wget也能够实现端点续传(-c参数),当然,这种操作是需要远程服务器支持的.

bash$ wget -c http://the.url.of/incomplete/file

可以把端点续传和镜像功能结合起来,这样可以在以前断过多次的情况下继续镜像一个有大量选择性文件的站点.如何自动实现这个目的我们在后面会讨论得更多.
如果你觉得下载时老是断线会影响你办公的话,你可以限制wget重试的次数.
bash$ wget -t 5 http://place.your.url/here
这样重试五次后就放弃了.用"-t inf"参数表示永远不放弃.不停地重试.

B.那对于代理服务该怎么办呢?
可以使用http代理的参数或者在.wgetrc配置文件里指定一个如何通过代理去下载的途径.但是有这么一个问题,
如果通过代理来进行端点续传的话可能会有几次失败.如果有一次通过代理下载的过程发生中断,那么代理服务器上缓存里保存是那个完整的
文件拷贝.所以当你用"wget -c"来下载剩余部分的时候代理服务器查看它的缓存,并错误地认为你已经下载了整个文件.于是就发出了错误的信号.
这个时候你可以用添加一个特定的请求参数来促使代理服务器清除他们的缓存:

bash$ wget -c --header="Pragma: no-cache" http://place.your.url/here

这个"--header"参数能够以各种数字,各种方式添加。通过它我们可以更改
web服务器或者代理服务器的某些属性。有些站点不提供外部连接的文件服务,只有通过同一个站点上其他的一些页面时内容
才会被提交。这个时候你可以用加上"Referer:"
参数:
bash$ wget --header="Referer: http://coming.from.this/page" http://surfing.to.this/page
有些特殊的网站只支持某种特定的浏览器,这个时候可以用"User-Agent:"参数
bash$ wget --header="User-Agent: Mozilla/4.0 (compatible; MSIE 5.0;Windows NT; DigExt)" http://msie.only.url/here


C.那我怎么设定下载时间呢?
如果你需要在你的办公电脑上通过和其他同事共享的一个连接来下载一些很大的文件,而且你希望你的同事不会因为网络速度的减慢而收到影响,
那你就应该尽量避开高峰时段。当然,不需要在办公室里等到所以人都走掉,也不需要在家里用完晚饭后还惦记着要上网下载一次。
用at来就可以很好的定制工作时间:
bash$ at 2300
warning: commands will be executed using /bin/sh
at> wget http://place.your.url/here
at> press Ctrl-D
这样,我们设定了下载工作在晚上11点进行。为了使这个安排能够正常进行,请确
认atd这个后台程序正在运行。

D.下载要花很多时间?
当你需要下载大量的数据,而且你又没有享有足够的带宽,这个时候你会经常发现在你安排的下载任务还没有完成,一天的工作却又要开始了。
作为一个好同事,你只能停掉了这些任务,而开始另外的工作。然后你又需要反复地重复使用"wget -c"来完成你的下载。这样肯定太繁琐了,
所以最好是用crontab来自动执行。创建一个纯文本文件,叫做"crontab.txt",包含下面的内容:
0 23 * * 1-5 wget -c -N http://place.your.url/here
0 6 * * 1-5 killall wget
这个crontab文件指定某些任务定期地执行。前五列声明是什么时候执行这个命令,而每行的剩余部分则告诉crontab执行什么内容。
前两列指定了每天一到晚上11点就开始用wget下载,一到早上6点就停止一切wget
下载。第三四列的*表示每个月的每一天都执行这个任务。第五列则指定了一个星期的哪几天来执行这个程序。 --"1-5"表示从星期一
到星期五。

这样在每个工作日的晚上11点,下载工作开始,到了上午的6点,任何的wget任务
就被停掉了。你可以用下面的命令来执行crontab:
bash$ crontab crontab.txt
wget的这个"-N"参数将会检查目标文件的时间戳,如果匹配了,下载程序就会停止,因为它说明整个文件已经下载完全了。
用"crontab -r"可以删除这个计划安排。我已经多次采用这种方法,通过共享的电话拨号来下载过很多的ISO镜像文件,还是
比较实用的。

E.如何下载动态变化的网页
有些网页每天都要根据要求变化好几次.所以从技术上讲,目标不再是一个文件,它没有文件长度.因此"-c"这个参数也就失去了意义.
例如:一个PHP写的并且经常变动的linux周末新闻网页:
bash$ wget http://lwn.net/bigpage.php3

我办公室里的网络条件经常很差,给我的下载带了很大的麻烦,所以我写了个简单的脚本来检测动态页面是否已经完全更新了.
#!/bin/bash

#create it if absent
touch bigpage.php3

#check if we got the whole thing
while ! grep -qi bigpage.php3
do
rm -f bigpage.php3

#download LWN in one big page
wget http://lwn.net/bigpage.php3

done
这个脚本能够保证持续的下载该网页,直到网页里面出现了"",这就表示该文件已经完全更新了.

  

F.对于ssl和Cookies怎么办?
如果你要通过ssl来上网,那么网站地址应该是以"https://"来开头的.在这样的情况下你就需要另外一种下载工具,叫做curl,它能够
很容易获得.有些网站迫使网友在浏览的时候必须使用cookie.所以你必须从在网站上得到的那个Cookie里面得到"Cookie:"这个参数.这样才
能保证下载的参数正确.对于lynx和Mozilla的Cookie的文件格式,用下面的:
bash$ cookie=$( grep nytimes ~/.lynx_cookies |awk {printf("%s=%s;",$6,$7)} )
就可以构造一个请求Cookie来下载http://www.nytimes.com上的内容.当然,你要已经用这个浏览器在该网站上完成注册.
w3m使用了一种不同的,更小巧的Cookie文件格式:
bash$ cookie=$( grep nytimes ~/.w3m/cookie |awk {printf("%s=%s;",$2,$3)} )
现在就可以用这种方法来下载了:
bash$ wget --header="Cookie: $cookie" http://www.nytimes.com/reuters/t ... ch-supercomput.html
或者用curl工具:
bash$ curl -v -b $cookie -o supercomp.html http://www.nytimes.com/reuters/t ... ech-supercomput.htm

G.如何建立地址列表?
到现在为止我们下载的都是单个文件或者是整个网站.有的时候我们需要下载某个网页上链接的大量文件,但没有必要把它整个网站
都镜像下来.比如说我们想从一个依次排列的100首歌里面下载前20首.注意,这里"--accept"和"--reject"参数是不会
起作用的,因为他们只对文件操作起作用.所以一定要用"lynx -dump"参数来代替.
bash$ lynx -dump ftp://ftp.ssc.com/pub/lg/ |grep gz$ |tail -10 |awk {print $2} > urllist.txt
lynx的输出结果可以被各种GNU文本处理工具过虑.在上面的例子里,我们的链接地址是以"gz"结尾的,并且把最后10个文件地址放到
urllist.txt文件里.然后我们可以写一个简单的bash脚本来自动下载这个文件里的目标文件:

bash$ for x in $(cat urllist.txt)
> do
> wget $x
> done
这样我们就能够成功下载Linux Gazette网站(ftp://ftp.ssc.com/pub/lg/)上的最新10个论题.

  

H.扩大使用的带宽
如果你选择下载一个受带宽限制的文件,那你的下载会因为服务器端的限制而变得很慢.下面这个技巧会大大缩短下载的过程.但这个技巧
需要你使用curl并且远程服务器有多个镜像可以供你下载.例如,假设你想从下面的三个地址下载Mandrake 8.0:
url1=http://ftp.eecs.umich.edu/pub/linux/mandrake/iso/Mandrake80-inst.iso
url2=http://ftp.rpmfind.net/linux/Mandrake/iso/Mandrake80-inst.iso
url3=http://ftp.wayne.edu/linux/mandrake/iso/Mandrake80-inst.iso
这个文件的长度是677281792个字节,所以用curl程序加"--range"参数来建立三个同时进行的下载:
bash$ curl -r 0-199999999 -o mdk-iso.part1 $url1 &
bash$ curl -r 200000000-399999999 -o mdk-iso.part2 $url2 &
bash$ curl -r 400000000- -o mdk-iso.part3 $url3 &
这样就创建了三个后台进程.每个进程从不同的服务器传输这个ISO文件的不同部分.这个"-r"参数指定目标文件的字节范围.当这三个
进程结束后,用一个简单的cat命令来把这三个文件衔接起来-- cat mdk-iso.part? > mdk-80.iso.(强烈建议在刻盘之前先检查md5)
你也可以用"--verbose"参数来使每个curl进程都有自己的窗口来显示传输的过程.

结束语
不用担心使用非交互式的下载方式会影响你的下载效果.无论网站设计者如何绞尽脑汁想阻止我们从他们的网站下载,我们都可以得到
免费的工具来自动完成下载任务.这会大大丰富我们的网络经历.
乐乎设计,乐乎生活~

TOP

Leo 2008-03-06 10:03
请教,wget如何下载这样的链接?
http://trac.wordpress.org/change ... =%2F&format=zip

正常下载的话,得到的应该是一个zip文件,而且直接用wget不带任何参数下载,得到的是一个html文件。

谢谢!

回复 举报 littlebat 2008-03-06 10:40
可以带 -O 参数下载,如下:
wget "http://trac.wordpress.org/changeset/7162/trunk?old_path=%2F&format=zip" -O ~/files/wp.zip
乐乎设计,乐乎生活~

TOP

wget下载整个网站或目录
名洋 @ 2010年03月6日 10:39

用wget下载东西,的确很方便,它会自动重连并断点续传。让人很放心。
经常要下载一个网站或网站的某个目录。
将wget命令放到这里备用:
下载一个目录,例如网站的yourdir
wget -U “Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5)” -r -p -k -np -Pmydir -nc -o down.log http://www.yourdomain.com/yourdir/index.html
如果要想下载整个网站,最好去除-np参数。
wget -U “Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5)” -r -p -k -nc -o down.log http://www.yourdomain.com/index.html
-U 修改agent,伪装成IE货firefox等
-r 递归;对于HTTP主机,wget首先下载URL指定的文件,然后(如果该文件是一个HTML文档的话)递归下载该文件所引用(超级连接)的所有文件(递归深度由参数-l指定)。对FTP主机,该参数意味着要下载URL指定的目录中的所有文件,递归方法与HTTP主机类似。
-c 指定断点续传功能。实际上,wget默认具有断点续传功能,只有当你使用别的ftp工具下载了某一文件的一部分,并希望wget接着完成此工作的时候,才需要指定此参数。
-nc 不下载已经存在的文件
-np 表示不跟随链接,只下载指定目录及子目录里的东西;
-p 下载页面显示所需的所有文件。比如页面中包含了图片,但是图片并不在/yourdir目录中,而在/images目录下,有此参数,图片依然会被正常下载。
-k 修复下载文件中的绝对连接为相对连接,这样方便本地阅读。
乐乎设计,乐乎生活~

TOP

http://www.truevue.org/linux/wget-download-website
发现wget果然强大,有网站下载这个功能,而且还可以控制网站下载的方式,下面就是wget进行网站下载的命令:
复制内容到剪贴板
代码:
$ wget \
     --recursive \
     --no-clobber \
     --page-requisites \
     --html-extension \
     --convert-links \
     --restrict-file-names=windows \
     --domains w3schools.com \
     --no-parent \
         http://www.w3schools.com/html/default.asp
上面的命令会下载 http://www.w3schools.com/html/default.asp 下面所有的页面。

上面用到的wget网站下载选择解释:

--recursive: 下载整个网站
--domains w3schools.com: 不要下载指定域名之外的网页。
--no-parent: 仅下载html/文件夹下的网页。
--page-requisites: 现在网页包括的所有内容(images, CSS and so on).
--html-extension: 将网页保存为html文件。
--convert-links: 将连接转换为本地连接
--restrict-file-names=windows: 文件名保存为windows格式。
--no-clobber: 不要覆盖已有文件,在下载中断后继续下载。
乐乎设计,乐乎生活~

TOP

 22 12
发新话题