在Shell脚本中,你可以使用expect
命令来自动化输入密码。expect
是一个用于自动化交互的工具,可以模拟用户输入来应对各种交互式命令行程序。
下面是一个使用expect
的示例脚本:
#!/usr/bin/expect
# 连接到远程虚拟机
spawn ssh bxapp@172.2.2.22
# 期望看到的字符串,匹配到后发送后面的命令
expect "password: "
# 发送密码
send "your_password\r"
# 等待命令执行完成
expect eof
# 连接到另一台虚拟机
spawn ssh bxapp@172.2.2.4
# 期望看到的字符串,匹配到后发送后面的命令
expect "password: "
# 发送密码
send "your_password\r"
# 等待命令执行完成
expect eof
# 执行sftp命令并上传文件
spawn sftp -oPort=2222 user@172.2.1.9
# 期望看到的字符串,匹配到后发送后面的命令
expect "password: "
# 发送密码
send "your_password\r"
# 期望看到的字符串,匹配到后发送后面的命令
expect "sftp> "
# 发送上传文件命令
send "put filename\r"
# 等待命令执行完成
expect eof
请将其中的your_password
替换为你的实际密码。这个脚本会自动化输入密码,并执行连接远程服务器和上传文件的操作。
你可以将上述内容保存为transfer_files.exp
文件。然后,在Java中调用这个expect
脚本执行即可。