Chinaunix首页 | 论坛 | 博客

apt

  • 博客访问: 381586
  • 博文数量: 121
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 600
  • 用 户 组: 普通用户
  • 注册时间: 2015-04-10 15:52
文章分类

全部博文(121)

文章存档

2017年(2)

2016年(23)

2015年(96)

我的朋友

分类: LINUX

2015-10-20 10:53:50

一 、 两台电脑,一台ubuntu12.04 32,一台12.04 64,通过ssh远程登录64位系统,编译android源码。每次登录都需要输入密码,感觉很麻烦。可以用expect脚本实现自动输入密码。

点击(此处)折叠或打开

  1. #!/usr/bin/ecpect

  2. spawn echo "expect script"
  3. spawn sudo ssh 192.168.***.***
  4. expect "*password*"
  5. send "******"
  6. expect "*password*"
  7. send "******"
  8. interact

就可以自动登录到远程机器。
登录设备后,需要跳转到指定的目录,假设是需要跳转到/opt目录下,可以在/root目录下的.bashrc 文件中添加命令

二 、 通过上面的脚本,可以登录到ubuntu系统下,并且以root用户登录。当然也可以是其他用户。
在远程的ubuntu系统下,有多个工作目录,登陆上需要跳转到对应的目录下,可以使用下面脚本test.sh:

点击(此处)折叠或打开

  1. #!/bin/bash
  2. echo "help you enter the right catalog"

  3. d1="dir1"
  4. d2="dir2"
  5. d3="dir3"
  6. d4="dir4"

  7. select catalog in d1 d2 d3 d4
  8. do
  9. echo "the route is ${!catalog}"
  10. break
  11. done
  12. cd ${!catalog}
  13. pwd
        如果想要实现跳转目录,必须执行source test.sh ,不能直接执行./testsh ,因为当在终端中执行脚本时,此终端相当于父进程,创建了一个子进程来执行该脚本。
        父进程可以向子进程传递参数,但是子进程不能向父进程传递参数。所以如果直接使用./test.sh的方式,在脚本执行过程中,确实已经进行了目录切换,并且执行了对应的操作,但是当脚本执行完并且退出后,由于参数不能传递,将回到脚本执行之前的目录,所以应该使用第一种方式。
        而source并不是这种方式,执行source filename 时,bash是在当前的环境下,即不会新建进程,直接读取filename文件中的命令并且执行。这个通常在设置环境变量时使用。
        如果要实现登陆自动执行该脚本,可以在root目录(登陆的用户目录下)下的.bashrc文件结尾处添加命令source path/test.sh.






阅读(2832) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~