目前我正在运行此脚本来打印远程盒子上的目录,但我不确定此代码是否正常工作。
#!/bin/bash
PWD="test123"
ip="10.9.8.38"
user=$1
/usr/bin/expect <<EOD
spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no $user@$ip df -h
expect "*assword:"
send "$PWD\n"
interact
EOD
答案 0 :(得分:2)
expect
会生成一个新的子shell,因此您的本地bash
变量会失去其范围,实现此目的的一种方法是将export
变量设为可用于子贝壳。使用Tcl env
内置函数在脚本中导入此类变量。
#!/bin/bash
export pwdir="test123"
export ip="10.9.8.38"
export user=$1
/usr/bin/expect <<EOD
spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no "$env(user)"@"$env(ip)" df -h
expect "*assword:"
send "$env(pwdir)\n"
interact
EOD
(或)如果您对使用expect
直接使用#!/usr/bin/expect
she-bang的#!/usr/bin/expect
set pwdir [lindex $argv 0];
set ip [lindex $argv 1];
set user [lindex $argv 2];
spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no $user@$ip df -h
expect "*assword:"
send "$pwdir\n"
interact
脚本不感兴趣,可以执行以下操作
./script.exp "test123" "10.9.8.38" "johndoe"
并以
运行脚本@JMS\ExclusionPolicy("none")