gpt4 book ai didi

linux - 在 Linux 中使用 Expect Spawn 命令的 SCP

转载 作者:太空宇宙 更新时间:2023-11-04 10:40:15 24 4
gpt4 key购买 nike

#!/usr/bin/expect -f

set login "root"
set addr "10.10.10.10"
set pw "123!"

set localDir "/home/user/www/*"
set servDir "/var/www/html/"



spawn scp -r $localDir $login@$addr:$servDir
expect "connecting (yes/no)?"
send "yes\r"
expect "$login@$addr\'s password:"
send "$pw\r"
interact

我需要将/home/user/www/中的所有文件复制到/var/www/html/但是当我使用目录字符串/home/user/www/* 在 SPAWN 中运行 SCP 命令时,它给出了一个错误。

以/home/user/www/运行它不会,但它会直接复制 www 文件夹,这不是我需要发生的事情。

最佳答案

选项 A:

最好的方法是设置无密码登录。将密码裸露在网络上并不是一个好主意。设置授权 key 后,您可以在没有密码提示的情况下使用 scp,甚至可以在 crontab 中使用。

首先以用户a登录Sys_A,生成一对认证 key 。不要输入密码:

a@Sys_A:~> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/a/.ssh/id_rsa):
Created directory '/home/a/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/a/.ssh/id_rsa.
Your public key has been saved in /home/a/.ssh/id_rsa.pub.
The key fingerprint is:
3e:4f:05:79:3a:9f:96:7c:3b:ad:e9:58:37:bc:37:e4 a@A

现在使用 ssh 在 Sys_B 上以用户 b 的身份创建一个目录 ~/.ssh。 (该目录可能已经存在,这很好):

a@Sys_A:~> ssh b@B mkdir -p .ssh
b@Sys_B's password:

最后将a的新公钥追加到b@Sys_B:.ssh/authorized_keys并最后一次输入b的密码:

a@Sys_A:~> cat .ssh/id_rsa.pub | ssh b@B 'cat >> .ssh/authorized_keys'
b@Sys_B's password:

从现在开始,您可以从 Sys_A 作为 a 无密码登录到 Sys_B:

a@Sys_A:~> ssh b@Sys_B

选项 B

使用 expect

#!/usr/bin/expect
eval spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no usr@$myhost.example.com
#use correct prompt
set prompt ":|#|\\\$"
interact -o -nobuffer -re $prompt return
send "my_password\r"
interact -o -nobuffer -re $prompt return
send "my_command1\r"
interact -o -nobuffer -re $prompt return
send "my_command2\r"
interact

bash 的示例解决方案可以是:

#!/bin/bash
/usr/bin/expect -c 'expect "\n" { eval spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no usr@$myhost.example.com; interact }'

这将等待输入然后返回(片刻)交互式 session 。

请看这个SO question

关于linux - 在 Linux 中使用 Expect Spawn 命令的 SCP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35448720/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com