linux-深度使用最后一招-rdesktop

无论怎么吹牛,总有人说偶尔要用到windows,就算自己不用,如果有人交代你的任务要用windows操作,那么你可以选择虚拟机或者远程操作,虚拟机就不用说了,那么远程操作的话window自己带的有,而在linux下面rdesktop相当不错,不过前置条件是需要安装

[cce lang=”bash”]
sudo apt-get install libx11-dev
sudo apt-get install libssl-dev
[/cce]

这样之后就可以去http://www.rdesktop.org/ 下载源码了,似乎也可以这样了:

[cce lang=”bash”]sudo apt-get install rdesktop[/cce]

附上我常用的命令和参数:

[cce lang=”bash”]
rdesktop -g 1024×768 -r clipboard:PRIMARYCLIPBOARD -r disk:Epan=/media/Study/ -r disk:Dpan=/media/Software -u chenks -p chenks 10.10.10.10
[/cce]

挂载了我的D,E两盘并且共享了复制粘贴

下面是源码的几步操作:

[cce lang=”bash”]
$ tar -zxvf rdesktop-1.5.0.tar.gz
$ cd rdesktop-1.5.0
$ ./configure
$ make
$ make install
[/cce]

终端输入 rdesktop //很详细用法说明

[cce lang=”bash”]
$ rdesktop -u username -p password ip
[/cce]

就可以远程登录了。username是XP当前用户

注意:登录前确认XP已开启允许远程登录,在 我的电脑——属性——远程 设置。

————-下面是详细参数解释——————-

rdesktop -z -r sound:remote -g workarea -D -K -a 16 -u administrator -p xxxxxx IP
-z:启动网络数据的压缩,减少带宽,局域网没什么作用;
-r sound:remote: 将声音在远程的机器上播放,而不带到你的本机里;当然你也可以使用 local 来将声音带到你的机器上播放,或者使用 off 来关闭声音;
-g workarea:-g 参数用来设置分辨率,比如-g 800×600
-f 全屏模式 使用 Ctrl+Alt+Enter 来切换
-D:不显示标题栏,配合 -g workarea 能更好地使用屏幕空间了;
-K: 这个选项说明保持窗口管理器的按键组合绑定。;
-a 16:将颜色设置为16位;《默认也就这么大了》
-u administrator -p xxxxxx IP:就是说所访问的使用 IP 地址;
rdesktop -f -r clipboard:PRIMARYCLIPBOARD sound:local ip
-r clipboard:PRIMARYCLIPBOARD是允许在远程主机和本机之间共享剪切板,就是可以复制粘贴,不过仅限于文字,文件不能。
rdesktop -f -r disk:MyDisk=/home/comet/temp ip
-r disk:MyDisk=/home/comet/temp就是把你的Linux下某个文件夹挂载到远程主机上

如此以来 彻底告别windows。

Linux-如果用,请深用

原文:http://blog.renren.com/blog/251447992/380955949

从完全卸载Windows开始,去沉浸到Linux中,不要再用虚拟机跑了。。因为Windows 能干而 Linux 干不了的事情,那就是不需要干的事情:

我希望喜欢 Linux 的朋友,完全清除微软和 Windows 灌输在你脑子里的谬论,别再相信它们所谓的“新技术”,别再追赶 Windows,因为追赶 Windows = 倒退。马克思有一个思想很重要,“新生事物并不一定是在最近出现的。” UNIX,Xwindow, TeX 虽然都比 Windows 先出现,但是它们才是先进生产力的代表。我们要清楚的认识到什么才是真正的现代化,什么才是真正的自动化。

勇敢的拿起像 bash, FVWM, VIM, Emacs, Mutt, lftp …… 这样强大的程序,不要再埋怨“Linux 为什么不能像 Windows 那样”,不要再浪费时间试用这样那样的程序,不要再忙着升级。是你需要改变而不是 Linux 和 UNIX,Linux 现在就可以成为你的好朋友。你需要认识它,了解它,信任它,才能完全的靠它来高效的工作,省出时间来处理世界上更加值得处理的事情。

附录: 我用来处理日常事务的 Linux 程序
这里给出一些推荐使用的可以处理一般事情的程序。至于你的专业上要用到的科学和工程软件比如 Matlab, Mathematica, Maple, HSpice, Design Compiler, …… 还有其它物理上的,化学上的,生物上的 …… 都必然有 Linux 和 UNIX 的版本。当然他们很多不是免费的,不要总是觉得什么都应该免费,它们是经过很多人辛勤劳动的产物,是可靠的程序,他们物有所值。

下面列出我常用的一些 Linux 程序。一个列表里可能有很多,那是为了方便你来选择,我列出了比较信得过的。但其实很多只有第一个是我真正在用的。我不喜欢试用程序。

Shell: bash。我使用 bash 的 vi 命令行方式。

编辑器: VIM, Emacs

程序开发: GCC, make, ld, Scheme48, j2sdk, Perl, Python, Tcl/Tk …

论文,幻灯工具:LaTeX, ConTeXt

绘图工具:MetaPost。这个语言太强了,以至于我只用它了。你不熟悉的话可以用 dia 来画一些流程图之类的图片。

图像处理:ImageMagick。其中的 import 程序可以屏幕抓图,convert 程序可以转换图像格式,display 可以显示图片和简单编辑(缩放,换质量,转格式,简单绘图,简单虑镜)。通常我就这么点需要。如果你要更强大的图像工具可以用 Gimp, 它几乎和 Photoshop 差不多。
自动管理工具:make。我可以用make来自动编译程序,自动编译文档,自动更新插图…… 全自动,而且不会重复劳动。

加密程序:GnuPG。我的 PGP 密钥就是它搞出来的,我用了 2048 位加密。

打包,压缩程序。什么都有: tar, gzip, bzip2, zip, rar, …

虚拟光驱程序。Linux 不需要虚拟光驱程序,直接 mount 就行了。

ftp 服务器:proftpd, vsftpd

WWW 服务器:apache。(我一般没有开)

ftp 客户程序:lftp

自动下载工具:wget

虚拟终端:rxvt, xterm, gnome-terminal, mlterm, …

X server: XFree86

窗口管理器:FVWM。编译加入了 libstroke。

中文输入:XSIM。被我修改过以适应 FVWM 的需要。另外推荐你还可以用 SCIM。

email 处理:Mutt + Postfix + fetchmail
看 PDF, PS, DJVU 文件:Acrobat Reader, xpdf, GhostScript, gv, djvu工具包和 netscape 插件。

看CAJ文档。我从来不看CAJ之类的文档,如果找不到PDF或PS,直接去图书馆借最好。

看网页:Mozilla, Phoenix, lynx。Mozilla-Xft 的显示效果比 IE 好很多。

英汉字典:IBM智能词典,星际译王。

编辑网页:我用 VIM 直接写 HTML。你如果想要图形方式的可以用其它的比如 screem, BlueFish。

登录其它 UNIX, Linux 机器:openSSH, telnet。 openSSH 还可以把其它机器的 X 程序通过 ssh 加密的隧道传到我机器上显示。
上BBS:rxvt(或任何一种终端) + telnet + chatbot(helloooo 机器人的程序)

QQ, ICQ: 我没有 QQ 或 ICQ。不过你可以用 Gaim, 它同时支持 QQ, ICQ 和很多其它的即时通信方式。ICQ 用户也可以用 Licq。

放录像:MPlayer, RealPlayer。MPlayer 太好了,直接就可以放 VCD, DVD, divx, wma, wmv … 用 Windows 的同学都很羡慕我,说 Windows 要放这个需要大堆插件。rm 最好还是用 realplayer 放,它也是免费的。

放音乐: xmms(mp3,ogg都可以), mpg321(放mp3), ogg123(放ogg).

看 Word 文档。请 Word 用户把文档全部转为 PDF 或 PS 再给我,文档里没有特殊的格式就用文本文件,要不我就不看 :P

其它程序:还有很多我需要用而你不一定用得着的。比如,Doctor Scheme, Scheme48, Scsh, …这些程序只有 Doctor Scheme 有Windows版本。还有很多幕后工作但是你一般不察觉的:xinetd, telnetd, sshd, crond, atd, lpd, … 他们都比 Windows 的对应者强的多。

Linux-使用Vagrant+puppet+VMbox+apache进行虚拟化开发

我们知道,系统的生产环境和运行时环境可能有很大差别,例如bug的级别神码的,但是更主要的是对于一个系统的配置需求,比如在macOS上开发的系统,配置自然是mac那套filesystem,但是运行又要在比如linux ubuntu上运行,这是如果团队多人协作,或是个人有几个不同的开发环境,那么Vagrant就是个不错的统一配置的工具:

Vagrant通过VMbox产生一个虚拟机,然后里面的系统比如装上linux ubuntu lucid32版本,那么虚拟机里就会产生一个和宿主机里一样的文件目录,默认/vagrant, 然后你在你的macOS里的开发,更新文件,虚拟机就会自动更新/vagrant里的文件,这样你的服务器在虚拟机里运行,配置为linux系统的各种配置文件,而开发则是在macOS里,实现了,开发和运行分离,生产和部署一致的优势。使得coder的精力主要用于代码的开发,而不是部署这些麻烦事。

具体一个简单的vagrant lucid32 运行apache2的虚拟机要进行一下几步:

1. download vmbox and install http://www.virtualbox.org/wiki/Downloads
2. download the virtual system envioriment lucid32 http://files.vagrantup.com/lucid32.box
3. install ruby and rubygems
4. install vagrant : gem install vagrant
5. start your first vagrant box by:
$ vagrant box add lucid32 http://files.vagrantup.com/lucid32.box
#进入项目目录
cd /var/www/test
#初始化,生成配置文件Vagrantfile
vagrant init lucid32
#生成项目虚拟机
vagrant up
6. 访问虚拟机
vagrant ssh
#查看项目目录,会发现与宿主机的当前目录内容一致,/vagrant目录默认和本地创建的目录内容一致;
ls /vagrant

在虚拟机里配置apache,mysql,php,python等服务,见:Apache – Ubuntu中文

这时运行 wget -qO- 127.0.0.1 会返回apache根目录的内容;但是为了在宿主机访问,我们需要进行端口映射和privision

7. 映射端口和privison配置apache或其他服务器:可以选择 Chef & Puppet
gem install chef –no-ri –no-rdoc
gem install puppet –no-ri –no-rdoc
然后修改Vagrantfile. 当然所用的服务,虚拟机里要先装好,例如mysql和apache
修改了Vagrantfile后要通过vagrant reload 重启虚拟机;

8. 如果用puppet,那么要生成一个manifest/default.pp文件,声明需要的服务和模块

9. 通过vagrant ssh进入到虚拟机,更改apache2的默认目录为 /vagrant (这是虚拟机和宿主机的共享目录),重启apache

10. 在宿主机里访问127.0.0.1:port 即可访问虚拟机里的运行的系统

11.最后一步不要忘了我们使用vagranta+VMbox的初衷,就是为了部署和分发方便,可以通过
vagrant package生成package.box文件
下次就可以直接用这个box来初始化虚拟机了,然后就什么都克隆了。

后记:这里特别提醒的几点,也许lz是菜鸟,不知到puppet是什么,一直没有安装这个东西,这样默认生成的lucid32虚拟机是可以启动的,一旦修改了Vagrantfile加入apache服务后就无法重启了,当然也就访问不了。因为这里用到了puppet,一定要先在宿主机里安装。其次一定要先装好ruby和rubygems

附上常用的vagranta 命令:

1. vagrant inita lucid32初始化   vagrant destroy 注销虚拟机

2. vagrant up启动   <=> vagrant halt停止

3. vagrant suspend 暂停   vagrant resume 恢复

4. vagrant status, 查看当前虚拟机的状态

我的test的目录的代码:vagrant-vmbox-test.tar

Linux-菜鸟一点不完全笔记

安装ubuntu11.10

设置网络,下载L2TP包xl2tpd_zju.tar,执行

[cce lang=”bash”]
sudo dpkg -i xl2tpd_1.1.12-zju2_i386.deb

sudo vpn-connect -c 配置帐号

sudo vpn-connect 连接

sudo vpn-connect -d 断开

[/cce]

更改root密码: sudo passwd root

切换用户,su – root,su – username

ssh -luser -pport 10.10.10.10touch filename

创建空文件cp -r ./wxf/ ./wxf2 复制文件夹,去掉r是复制文件

rm -f -r file 强制,递归删除

mv source source source … dir 将source等移入到dir内

=====文件内容查阅====

cat file 从第一行开始显示
more file 一页一页查看 enter或space控制,q离开
less file 与more一样,但可以向前向后,可用/,?来查询
head,tail -n 20 file 显示最前或最后的20行

=====文件位置查找=====

which ls 查找命令ls的位置
whereis [-bmsu] filename 查找文件的位置
find 查找整个盘
locate partoffilename 可以查找不完整的文件名

=====文件压缩=====

z是gz格式文件,j是bz2的格式,c是创建,x是解压,v是查看过程,f是filename
tar zcvf filename.tar.gz file1 file2 file3
tar zxvf filename.tar.gz

=====文件备份===

dump [-Suvj] [-level] [-f filename] files
-S 列出需要多少空间
-u将本次备份时间记录下来
-v 显示过程
-j 备份成bz2格式的文件
-level -0~-9 每一级都与前一级比较从而增量备份
-f 后接文件名

===文件恢复===

restore -r [-f dumpfile] 恢复整个文件系统
restore -t [-f dumpfile] 查看dump文件

===Vim操作====

i, ESC, :wq! 编辑,退出,强制保存退出,又可以ZZ保存后退出

hjkl 左下上右光标
30j 向下移动30行
ctrl+f 向下移动一页
ctrl+b 向上移动一页
0 移动到行首 $ 移动到行尾 G移动到文件的最后一行 nG移动到第n行

x X 向后向前删除一个字符 nx 删除n个字符 dd删除一整行 ndd删除往下的n行
yy复制当前行 nyy向下复制n行

p 粘贴内容

:set nu 显示行号 :set nonu 取消显示行号
:sp{filename} 打开两个窗口
ctrl+w+j/k(向上/下箭头)切换窗口

====Shell====

alias lm=’ls -al’ 给复杂的命令起别名
——-变量——-:
命名: myname=”wang xianfeng” 空格要写在双引号里。
echo myname 显示变量
PATH=”$PATH”:/home/bin 字符变量累加 “$PATH”会指代原来的PATH内容;单引号里的$就是$字符,另外\可以转移空格和引号
bash 命令直接进入子进程,之前的变量会无效,若想得到全局变量则需要 export variable 例如 export name
取消变量:unset name
查看所有变量: env 或者export

变量可以作为较长的字符的别名,比如cd到一个很长但又常用的目录里,就可用一个变量来代替这个目录
# work=/home/pioneer/Downloads/wxf
#cd $work 即可

declare -i random=$RANDOM*10/28623
echo $random 得到0-9的随机数

—-读取———:

# read -p “enter your name” -t 30 username 提示符:enter your name 等待30s,将输入的值存在username中
# declare -aixr variable 声明变量类型:a数组,i整数,x环境变量,r只读

——-脚本====

source FileName
作用:在当前bash环境下读取并执行FileName中的命令。
注:该命令通常用命令“.”来替代

未完待续…

Linux-定时任务-自动登录-爬虫技术

  • 远程访问linux服务器: SSH

ssh -l login_name -p port 10.10.10.1
然后按要求输入你的password, 进入后和访问自己的电脑终端一样了;

  • 设定定时任务crontab -e 进入vim编写脚本
众所周知的linux系统的crontab定时任务十分优秀, 但是对于菜鸟来说很多定时的功能比如mail, wget, 执行php都用不到, 而我最想用的不过是定时访问一个网址而已, 因为一切工作都在那个网址里做了;  这源于我更习惯将更多的功能放在php里,定时只需要访问一个网页足以;查了许久最终发现两个好用的,一个适用于远程执行url,一个适合本地执行;
 当我们需要定时去调用某个本机的或者是远程的web程序时,可以这样设置crontab
0 5 * * * /usr/bin/curl   http://www.wangxianfeng.com此处  ”0 5 * * * ”  表示每天早上的5点钟定时访问上面的url 链接,将其加入到你的 crontab 替代文件中.

当我们需要定时执行某个系统内的php脚本程序时,可以这样设置crontab

* 19 * * * /usr/local/php/bin/php /var/www/test.php
此处表示调用php(因为是安装在”/usr/local/php/bin”这个目录下),每天的下午7点执行web目录下test.

(mac里的终端表示: 使用curl和php的时候可以不用加路径!!!)
  • 下面附上定时任务的参数:

crontab -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用哪个文字编辑器.(进入后按i进入insert状态,编写后esc退出i状态,:w,:q分别表示保存和退出VI。
crontab -r : 删除目前的时程表
crontab -l : 列出目前的时程表
crontab file [-u user]-用指定的文件替代目前的crontab。
时程表的格式如下 :
f1 f2 f3 f4 f5 program
其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。
当f1为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序
当f1为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行
当f1为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次
当f1为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,
使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表, 一般多用这种方式设置.

  • 其他示例:

#每两个小时
0 */2 * * * date
#晚上11点到早上8点之间每两个小时,早上8点
0 23-7/2,8 * * * date
#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * mon-wed date
#1月份日早上4点
0 4 1 jan * date

  • curl函数:用户访问网页,自动登录,抓去数据等环节
 比如爬虫代码如下:其中from_url是目标网页,usecookie用于存储cookie

$usecookie = "cookie.txt"; //用来保持cookie
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $from_url);
curl_setopt($ch, CURLOPT_COOKIEFILE, $usecookie);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result = curl_exec($ch);
curl_close($ch);

include_once('simple_html_dom.php');//这个文件可以分析网页结构
$html = str_get_html($result);//得到具有结构的html

$html->find('table.front-table tr td.table-label-text');

如果提示说没有curl_init函数,将php.ini中;extension=php_curl.dll的;去掉。
(未完待续…)
这里是一个完整的带验证码的自动登陆加爬虫分析的实例:自动登陆+验证码+爬虫分析