使用expect在远程计算机上发送和运行代码

时间:2015-11-22 08:17:57

标签: java sockets expect

嘿,我正在为项目构建分布式系统。为此,我有一堆奴隶机器和一台主机器。 master应该向slave发送java代码,在slave上运行java代码,然后在自己上运行不同的java代码。

slave的代码创建一个TCP服务器套接字并等待master。师父发送工作并回复。

所以我的slave应该在master开始请求连接之前已经创建了服务器套接字。

这是我的期望代码到目前为止

#!/usr/bin/expect -f

# Get the list of hosts, one per line #####
set f [open "hosts.txt"]
set hosts [split [read $f] "\n"]
close $f

# Iterate over the hosts
foreach host $hosts {
    spawn scp Slave.class $username@$host:/home/myDir/Slave.class
    expect "assword:"
    send "$password\r"

    spawn ssh $username@$host
    expect "assword:"
    send "$password\r"

    expect "% "
    send "cd myDir\r"

    expect "% "
    send "nohup java Slave &\r"

    # Tidy up
    expect "% "
    send "exit\r"
}

puts "Running Master code"
puts [exec java Master]

当我运行此代码时,它运行缓慢,它在终端执行前一行后等待。有没有办法让它更快。

0 个答案:

没有答案