一 、 两台电脑,一台ubuntu12.04 32,一台12.04 64,通过ssh远程登录64位系统,编译android源码。每次登录都需要输入密码,感觉很麻烦。可以用expect脚本实现自动输入密码。
-
#!/usr/bin/ecpect
-
-
spawn echo "expect script"
-
spawn sudo ssh 192.168.***.***
-
expect "*password*"
-
send "******"
-
expect "*password*"
-
send "******"
-
interact
就可以自动登录到远程机器。
登录设备后,需要跳转到指定的目录,假设是需要跳转到/opt目录下,可以在/root目录下的.bashrc 文件中添加命令
二 、 通过上面的脚本,可以登录到ubuntu系统下,并且以root用户登录。当然也可以是其他用户。
在远程的ubuntu系统下,有多个工作目录,登陆上需要跳转到对应的目录下,可以使用下面脚本test.sh:
-
#!/bin/bash
-
echo "help you enter the right catalog"
-
-
d1="dir1"
-
d2="dir2"
-
d3="dir3"
-
d4="dir4"
-
-
select catalog in d1 d2 d3 d4
-
do
-
echo "the route is ${!catalog}"
-
break
-
done
-
cd ${!catalog}
-
pwd
如果想要实现跳转目录,必须执行source test.sh ,不能直接执行./testsh ,因为当在终端中执行脚本时,此终端相当于父进程,创建了一个子进程来执行该脚本。
父进程可以向子进程传递参数,但是子进程不能向父进程传递参数。所以如果直接使用./test.sh的方式,在脚本执行过程中,确实已经进行了目录切换,并且执行了对应的操作,但是当脚本执行完并且退出后,由于参数不能传递,将回到脚本执行之前的目录,所以应该使用第一种方式。
而source并不是这种方式,执行source filename 时,bash是在当前的环境下,即不会新建进程,直接读取filename文件中的命令并且执行。这个通常在设置环境变量时使用。
如果要实现登陆自动执行该脚本,可以在root目录(登陆的用户目录下)下的.bashrc文件结尾处添加命令source path/test.sh.
阅读(2916) | 评论(0) | 转发(0) |