gpt4 book ai didi

variables - 期望具有可变主机名的脚本

转载 作者:行者123 更新时间:2023-12-04 19:02:33 24 4
gpt4 key购买 nike

在重新启动我们的数十台 UBUNTU 服务器(12.04 和 14.04)后,我想使用 EXPECT 脚本安装卷。

我无法弄清楚如何设置主机名之类的变量(例如从/etc/hostname 获取记录)-> 我不想为每台服务器创建一个脚本(设置特定的主机名)。我的想法是在我的环境中全局使用这个脚本。

以下脚本工作正常 - 但设置了修复主机名

#!/usr/bin/expect -f

set timeout 90

set sudo_pass "Password01
set mount_pass "Password02"
set hostname "test-staging" <<<==== here I set static hostname

# turns off the output to STDOUT
log_user 0

# run mount-script
spawn sudo mount-script

# type sudo pass
expect "password for"
send "$sudo_pass\r"

# type Pass for mount-script
expect "Enter passphrase"
send "$mount_pass\r"

# call & paste hostname
expect "Please provide a hostname for this instance,"
send "$hostname\r"

# type letter Y - for test environment
expect "Is this a test instance? Enter 'Y', otherwise press enter"
send "Y\r"

interact

我试图用谷歌搜索它,我找到了主机名的命令,例如
send 'lsnrctl status listener_`hostname`\r'

或者
send "cat /etc/rc.d/rc.local |grep hostname \r\n"

我尝试将它们设置为 SET HOSTNAME 并尝试通过命令发送调用它们。不幸的是,它也不起作用。

这是输出
    .......    
dbg1.7>
1: expect "Please provide a hostname for this instance
dbg1.8>
Please provide a hostname for this instance
1: send 'lsnrctl status listener_`hostname`\r'

dbg1.9>
usage: send [args] string
while executing
"send 'lsnrctl status listener_`hostname`\r'"
(file "test01-expect.sh" line 38)
1: exit 1

我也对不同的解决方案持开放态度。
谢谢你

最佳答案

要获取机器的主机名,你不能使用终端命令hostname吗? ?

Tcl有一个命令exec它将执行命令并返回结果。

set host_name [exec hostname]

或者,等效地,
set host_name [ exec cat /etc/hostname]

无需将其保存到变量中,甚至可以直接在发送命令中使用,
expect "Please provide a hostname for this instance,"
send "[exec hostname]\r"

引用: exec

关于variables - 期望具有可变主机名的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33678553/

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