首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用她-砰在单线

使用她-砰在单线
EN

Unix & Linux用户
提问于 2016-01-02 00:13:46
回答 1查看 2K关注 0票数 1

她能用在单身汉身上吗?

我正试图从https://stackoverflow.com/questions/16928004/how-to-enter-ssh-password-using-bash中运行这个脚本,在一条直线中。

如果我将它放入一个文件中,并与./file一起运行,它就会像预期的那样工作,但是我如何能够以oneliner的身份运行它呢?

这是一个脚本,没有任何问题。

代码语言:javascript
复制
#!/usr/bin/expect -f
spawn ssh user@my.server.com
expect "assword:"
send "mypassword\r"
interact

我怎么能从单身汉那里运行呢?

如果我想跑

spawn ssh user@my.server.com; expect "assword:"; send "mypassword\r"; interact

它返回:

代码语言:javascript
复制
bash: spawn: command not found

如果我想跑

#!/usr/bin/expect -f; spawn ssh user@my.server.com; expect "assword:"; send "mypassword\r"; interact

然后整件事被当作评论对待,什么也不会发生。

编辑:

试着运行答案中建议的内容:

代码语言:javascript
复制
expect -c `spawn ssh user@server "ls -lh /some/file"; expect "assword:"; send "mypassword\r"; interact`

它回来了

代码语言:javascript
复制
bash: spawn: command not found
couldn't read file "assword:": no such file or directory
bash: send: command not found
bash: interact: command not found
expect: option requires an argument -- c

跑步时:

代码语言:javascript
复制
$ cat << 'EOF' | /usr/bin/expect -
> spawn ssh user@server "ls -lh file"
> expect "assword:"
> send "password\r"
> interact
> EOF

它看起来像是SSH到服务器,但不运行命令,或者它没有输出任何结果:

它返回:

代码语言:javascript
复制
spawn ssh user@server ls -lh file
user@server password

当我从脚本中运行它时:

代码语言:javascript
复制
./test
spawn ssh user@server ls -lh file
user@server's password:
-rw-rw-r-- 1 user user 467G Jan  2 00:46 /file

EDIT2:

第一个命令的问题是返回,而不是单引号,下面的命令按预期工作。

代码语言:javascript
复制
expect -c 'spawn ssh user@server "ls -lh file"; expect "assword:"; send "mypassword\r"; interact'

EN

回答 1

Unix & Linux用户

发布于 2016-01-02 00:26:57

expect可以从标准输入读取它的脚本:

代码语言:javascript
复制
cat << 'EOF' | /usr/bin/expect -
spawn ssh user@my.server.com
expect "assword:"
send "mypassword\r"
interact
EOF
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/252777

复制
相关文章

相似问题

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