生成后如何在expect shell脚本中获取子进程pid

发布于 2025-01-04 16:04:40 字数 432 浏览 0 评论 0原文

脚本的一部分a.exp

#!/usr/bin/expect
# ..... 
spawn ssh -qTfnN -D $port $user@$host
expect "*assword:*"
# .....

如何获取子进程“ssh”的pid

如果我在 bash shell 中执行这些命令,而不是在脚本文件中,结果是

expect1.1> spawn ssh name@host
spawn ssh name@host
2188
expect1.2> 

2188 是子进程 pid。

以及如何在expect shell中使用exp_pid命令?

Part of the script a.exp:

#!/usr/bin/expect
# ..... 
spawn ssh -qTfnN -D $port $user@$host
expect "*assword:*"
# .....

How can I get the pid of sub-process "ssh".

If I execute these in bash shell, not in a script file, the result is

expect1.1> spawn ssh name@host
spawn ssh name@host
2188
expect1.2> 

2188 is the sub-process pid.

And how to use exp_pid command in the expect shell?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

峩卟喜欢 2025-01-11 16:04:40

我认为您正在寻找的是这样的:

spawn ssh name@host
set pid [exp_pid]
puts "PID: $pid"

I think that what you're looking for is something like this:

spawn ssh name@host
set pid [exp_pid]
puts "PID: $pid"
梦旅人picnic 2025-01-11 16:04:40

此手册页说:

spawn 返回 UNIX 进程 ID。如果没有生成任何进程,则返回 0。

即你可以这样做:

set pid [spawn ssh -qTfnN -D $port $user@$host]

你也可以使用 exp_pid 作为 jcollado 演示。同一个手册页解释说:

exp_pid [-i spawn_id]
返回与当前生成的进程相对应的进程 ID。如果使用 -i 标志,则返回的 pid 对应于给定的生成 ID。

This man page says:

spawn returns the UNIX process id. If no process is spawned, 0 is returned.

I.e. you can do:

set pid [spawn ssh -qTfnN -D $port $user@$host]

You can also use exp_pid as jcollado demonstrated. The same man page explains that:

exp_pid [-i spawn_id]
returns the process id corresponding to the currently spawned process. If the -i flag is used, the pid returned corresponds to that of the given spawn id.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文