在Ubuntu 16.04.2服务器上,我有一个简单的期望脚本/etc/pipes.expect
来设置通过服务器端口的vm路由。
以下是/etc/pipes.expect
的内容:
#!/usr/bin/expect -f
sleep 60
spawn virsh start lucas
spawn virsh start ssix-project
spawn virsh start allsorter
sleep 300 #some time to boot the vms
spawn ssh -f -N -L [my_ip]:22003:localhost:22 lucas@ssix-project
expect "*assword:*" { send "[pass1]\r" }
expect "*yes/no*" {
send "yes\r"
expect "*assword:*" { send "[pass1]\r" }
}
spawn ssh -f -N -L [my_ip]:22004:localhost:22 lucas@allsorter
expect "*assword:*" { send "[pass2]\r" }
expect "*yes/no*" {
send "yes\r"
expect "*assword:*" { send "[pass2]\r"}
}
spawn ssh -f -N -L [my_ip]:22002:localhost:22 lucas@lucas
expect "*assword:*" { send "pass3\r" }
expect "*yes/no*" {
send "yes\r"
expect "*assword:*" { send "pass\r"}
}
如果我用以下方式调用脚本,脚本运行完美:
/etc/pipes.expect
,expect /etc/pipes.expect
或/usr/bin/expect /etc/pipes.expect
但ssh
通过pipes.expect
调用pipes.service
时,virsh
来电不会生效。让我感到误解的是,当手动或通过服务调用脚本时,pipes.service
调用(第3行到第5行)都有效。
以下是我[Unit]
Description=Spark service
[Service]
ExecStart=/usr/bin/expect /etc/pipes.expect
[Install]
WantedBy=multi-user.target
的内容:
import pandas as pd
PS:我已经尝试了很多方法让这个脚本在启动时运行,包括init.d,crontab,rc.local,似乎没有任何工作:(。任何人都可以点亮这里的东西吗?
感谢。