安装

一、Tcl

主页: http://www.tcl.tk

wget http://120.52.73.45/jaist.dl.sourceforge.net/project/tcl/Tcl/8.4.20/tcl8.4.20-src.tar.gz

解压:

tar xfvz tcl8.4.20-src.tar.gz

cd tcl8.4.20/unix

编译、安装

./configure --prefix=/usr/local/tcl --enable-shared
make
make install

安装完毕以后,进入tcl源代码的根目录,把子目录unix下面的tclUnixPort.h copy到子目录generic中。

cd /tmp && cp tcl8.4.20/unix/tclUnixPort.h tcl8.4.20/generic/

组合成一条命令(方便使用 Docker 配置环境):

1
2
3
cd /tmp && wget http://120.52.73.45/jaist.dl.sourceforge.net/project/tcl/Tcl/8.4.20/tcl8.4.20-src.tar.gz  && tar xfvz tcl8.4.20-src.tar.gz && cd tcl8.4.20/unix && ./configure --prefix=/usr/local/tcl --enable-shared && make && make install

cd /tmp && cp tcl8.4.20/unix/tclUnixPort.h tcl8.4.20/generic/

二、Expect

下载

wget http://120.52.73.45/nchc.dl.sourceforge.net/project/expect/Expect/5.45/expect5.45.tar.gz

解压

tar xzvf expect5.45.tar.gz

cd expect5.45

编译、安装

./configure --prefix=/usr/local/expect --with-tcl=/usr/local/tcl/lib --with-tclinclude=../tcl8.4.20/generic 

make

make install

做下连接

ln -s /usr/local/tcl/bin/expect /usr/bin/expect

组合成一条命令(方便使用 Docker 配置环境):

1
cd /tmp && wget http://120.52.73.45/nchc.dl.sourceforge.net/project/expect/Expect/5.45/expect5.45.tar.gz && tar xzvf expect5.45.tar.gz && cd expect5.45 && ./configure --prefix=/usr/local/expect --with-tcl=/usr/local/tcl/lib --with-tclinclude=../tcl8.4.20/generic && make && make install && ln -s /usr/local/tcl/bin/expect /usr/local/expect/bin/expect

使用方法

简单使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/usr/bin/expect 



# 设置超时时间为 60 秒

set timeout 60

# 设置要登录的主机 IP 地址

set host 192.168.1.46

# 设置以什么名字的用户登录

set name root

# 设置用户名的登录密码

set password 123456



#spawn 一个 ssh 登录进程

spawn ssh $host -l $name

# 等待响应,第一次登录往往会提示是否永久保存 RSA 到本机的 know hosts 列表中;等到回答后,在提示输出密码;之后就直接提示输入密码

expect {

"(yes/no)?" {

send "yes\n"

expect "assword:"

send "$pasword\n"

}

"assword:" {

send "$password\n"

}

}

expect "#"

# 下面测试是否登录到 $host

send "uname\n"

expect "Linux"

send_user "Now you can do some operation on this terminal\n"

# 这里使用了 interact 命令,使执行完程序后,用户可以在 $host 终端进行交互操作。

Interact

传参:

set password [lrange $argv 0 0]

切换工作目录:

cd PATH

参考资料
参考资料