我想做的是:
.exp文件,该*.txt文件将从同一目录中的文件中读取,并将文本文件中的所有内容解析为expect脚本中的字符串变量.所以脚本的作用是从txt同一目录中的文件中读取一系列主机名,然后将它们读入一个字符串,该.exp文件将自动登录到每个主机名并执行一系列命令.
我编写了以下代码,但它不起作用:
#!/usr/bin/expect
set timeout 20
set user test
set password test
set fp [open ./*.txt r]
set scp [read -nonewline $fp]
close $fp
spawn ssh $user@$host
expect "password"
send "$password\r"
expect "host1"
send "$scp\r"
expect "host1"
send "exit\r"
Run Code Online (Sandbox Code Playgroud)
任何帮助是极大的赞赏....
我无法使用powershell和pslog来从psloggedon工具中提取"上次登录用户"和"登录时间戳"的信息.基本上我要做的是从一个带有所有服务器名称列表的文本文件中读取,然后在它们上使用pslogged来获取信息.因此,如果我单独运行以下命令,它可以工作
psloogedon \\server1
Run Code Online (Sandbox Code Playgroud)
但是当我在powershell中执行此操作时,它不起作用
$content = [IO.File]::ReadAllText("C:\assets.txt")
Foreach($computer in $content)
{
Invoke-Expression "psloggedon -x -l \\$computer"
} Export-Csv -NoTypeInformation loggedon.csv
Run Code Online (Sandbox Code Playgroud)
在assets.txt中我们有以下内容:
server1
server2
server3
etc...
Run Code Online (Sandbox Code Playgroud)
我如何基于此构建1)使脚本工作使用psloggedon获取信息2)将登录用户,计算机名称和时间戳解析为具有3列文件的CSV?
任何帮助表示赞赏....
我试图在unix中捕获程序的输出,并将其用作expect脚本中的变量.当我执行该程序时,我会得到这样的结果:
[user@svr]# ./passwdgenerator
1234*&^^[user@svr]#
Run Code Online (Sandbox Code Playgroud)
如您所见,"1234*&^^"是我想要捕获的密码并将其放入expect脚本中:
set user user1
set password [open ./passwdgenerator]
spawn ssh $user@server1.com
expect "password:"
send "$password\r"
Run Code Online (Sandbox Code Playgroud)
显然它目前不工作,只是想知道我应该怎么写这个.曾经在txt文件上试过这个,工作过.但是当它是程序输出时,出于安全原因我们不想在文本文件中存储密码,所以它不起作用.有专家可以帮个忙吗?非常感谢.!
expect ×2
loops ×2
shell ×2
tcl ×2
unix ×2
parsing ×1
powershell ×1
sysinternals ×1
variables ×1