使用linux1x + expect登录校园网:
# sudo apt-get install expect (Expect需要Tcl编程语言的支持,此命令还会在系统上安装Tcl)
编写脚本:
#!/usr/bin/expect -f
spawn su
expect "Password: "
send "password\n"
expect "root@lzd-laptop*"
send "linux1x\n"
expect "eof"
当expect正在运行时,他的父进程是gnome-terminal,任何一个运行在xterm下的终端应用程序的父进程都是
gnome-terminal。
lzd@lzd-laptop:~$ ps -axj
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
1 8135 5517 5517 ? -1 Sl 1000 0:03 gnome-terminal
8135 9272 9272 9272 pts/0 9272 Ssl+ 1000 0:00 /usr/bin/expect -f /hom
9272 9274 9274 9274 pts/1 9287 Ss 0 0:00 su
9274 9277 9277 9274 pts/1 9287 S 0 0:00 bash
9277 9287 9287 9274 pts/1 9287 Sl+ 0 0:00 linux1x
expect退出后,几秒后,expect退出xterm,su成为孤儿进程被init领养,expect还将以su为对话首领的对话
的控制终端偷走,使他们成为后台进程。什么时候想退出linux1x,可以给su发送SIGTERM或者其他终止此对话的信号,
这样以su为对话首进程的所有进程都会退出了。
lzd@lzd-laptop:~$ ps -axj
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
1 9274 9274 9274 ? -1 Ss 0 0:00 su
9274 9277 9277 9274 ? -1 S 0 0:00 bash
9277 9287 9287 9274 ? -1 Sl 0 0:00 linux1x
将脚本中的password换成你的密码,这样就不必每次都在xterm下输入密码了,而且由于linux1x被调度成后台守护进程,即使你
退出系统,也不会掉线。缺点是你无从得知linux1x反馈给用户的信息了。
expect原理
阅读(2049) | 评论(0) | 转发(0) |