首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在远程linux上发出命令

在远程linux上发出命令
EN

Stack Overflow用户
提问于 2014-11-02 05:24:44
回答 2查看 102关注 0票数 0

我正在寻找任何使用expect完成此任务的方法:

代码语言:javascript
复制
Mac-mini:~ root# scp file peter@Mac-mini:file2
The authenticity of host 'mac-mini (192.168.1.105)' can't be established.
RSA key fingerprint is b6:12:3e:48:10:e6:d2:1f:8f:57:f4:01:2d:f3:23:89.
Are you sure you want to continue connecting (yes/no)?  yes
Password:  ********

并发出

代码语言:javascript
复制
crontab -l > crontab.src
EN

回答 2

Stack Overflow用户

发布于 2014-11-02 05:33:15

代码语言:javascript
复制
#!/usr/bin/expect

set machine0 "Mac-minimini"
set machine1 "Mac-mini"
set machine2 "Mac-pro"
...
set machine19 "Mac-air"


for {set i 1} {$i < 20} {incr i 1} {
    eval spawn scp file peter@${machine${i}}:file2
    expect "connecting (yes/no)?"
    send "yes\r"
    #use correct prompt
    set prompt ":|#|\\\$"
    interact -o -nobuffer -re $prompt return
    send "password\r"
    interact -o -nobuffer -re $prompt return
    send "crontab -l > crontab.src\r"
    interact
}

编辑:您可以使用for循环,并使用循环变量连接每个机器的名称。(例如,Mac-mini0,Mac-mini1,...Mac-mini19)

Edit2:我不确定${machine${i}}是否可以工作,但值得一试。

票数 0
EN

Stack Overflow用户

发布于 2014-11-02 05:34:23

如下所示设置ssh密钥:

代码语言:javascript
复制
ssh-keygen -t rsa

将您的公钥放在远程机器上(假设您在主目录中创建了一个名为id_rsa的密钥)

代码语言:javascript
复制
ssh-copy-id peter@Mac-mini

然后,您将能够在不输入密码的情况下执行scp。

代码语言:javascript
复制
autoexpect -f scp file peter@Mac-mini:file2

对于crontab部分,我假设您指的是在远程机器上。

代码语言:javascript
复制
autoexpect -f crontab ssh peter@Mac-mini "crontab -l > crontab.src"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26693420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档