-1
所以即时尝试写一个脚本,通过SSH自动连接过于复杂的代码问题
我有三个文件。 首先是文本文件(file.txt的)我的登录凭据(现在它只有一个,但后来会有几个):
user1 abcd
第二个文件(connect.sh)是bash的文件读取凭据并将他们希望文件是这样的:
#!/bin/bash
while IFS='' read -r line || [[ -n "$line" ]]; do
count=0;
words[0]="";
for word in $line; do
words[$count]="$word"
count=$(($count + 1))
done
myDir="$(dirname "$0")"
"$myDir/find.sh" "${words[1]}"
done < "$1"
第三个文件(find.sh)是/预期文件,该文件是这样的:
#!/usr/bin/expect
set password [lindex $argv 0]
spawn ssh "[email protected]"
expect "Password:"
send "$password\r"
interact
然而,当我尝试登录它未能提供 密码。据我检查密码是正确发送到期望的脚本。此外,我尝试设置超时功能,但它也不起作用。
您应该使用SSH密钥。 –
你让自己变得更难。期望的是Tcl,一个完整的脚本系统,可以读取文件,无需调用另一个进程寻求帮助。既然你的bash脚本几乎什么都不做(什么是数字?你不使用它)放弃额外的噪音。在expect脚本中调试'puts'也会有所帮助。 – msw
我不确定发布时是否发布了错字。无论如何,要模拟'enter'键,你必须使用'\ r',而不是'/ r'。 – Dinesh