我尝试在我的linux red-hat版本5.7上安装ansible工具
yum install ansible
Loaded plugins: security
Setting up Install Process
No package ansible available.
Nothing to do
Run Code Online (Sandbox Code Playgroud)
ansible未安装在我的linux机器上 - 当然!
所以为什么我得到 - 没有包装ansible可用.以及如何解决这个问题?
yum.repos.d的视图是:
/etc/yum.repos.d]# ls
rhel-debuginfo.repo rhel-source.repo service-cd-repo.repo stp-default- repo.repo
Run Code Online (Sandbox Code Playgroud)
我已解决如下:
ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=50 time=63.4 ms
Run Code Online (Sandbox Code Playgroud)
更新 - 尝试安装epel-release软件包
yum install epel-release
Loaded plugins: security
service-cd | 951 B 00:00
swp-default | 951 B 00:00
Setting up Install Process
No package epel-release available.
Nothing to …
Run Code Online (Sandbox Code Playgroud) 我做了一个简单的脚本:
$ more test.bash
#!/bin/bash
echo test
exit 1
Run Code Online (Sandbox Code Playgroud)
当我运行脚本时,退出状态应为1
$ /tmp/test.bash
echo $?
1
Run Code Online (Sandbox Code Playgroud)
但是当我按照以下方式运行时
/tmp/test.bash | tr -d '\r' 1>>$LOG 2>>$LOG
echo $?
0
Run Code Online (Sandbox Code Playgroud)
退出状态为0,(不符合预期1)
似乎退出状态来自tr命令.但我想要的是从脚本中获取退出状态 - test.bash.
为了从脚本中获取正确的退出状态,而不是从管道后面的命令中获取正确的退出状态,我需要在语法中添加/更改什么?
我有 Linux 集中服务器 \xe2\x80\x93 Linux 5.X。
\n\n在某些情况下,在我的 Linux 服务器上get_hosts.ksh可以从其他一些不同的主机运行
\n\n例如get_hosts.ksh可以在我的 Linux 计算机上同时运行三次或多次。
\n\n我的问题:
\n\n我使用命令 xmllint 来验证 Linux 机器上的 xml 文件
我需要的是静默模式没有输出,并且我的验证将仅使用退出代码($?)
正如我们在这里看到的,当 xml 错误时,即使我设置了 --noout 标志,我也会在标准输出上收到错误
xmllint --noout CreDefault.XML
Default.XML:16: parser error : Opening and ending tag mismatch: Networks line 6 and root
orrectiveActions/><fallback/></ErrorHandler></C></T><Vars/></G></Generic></ro ot>
^
Default.XML:16: parser error : Premature end of data in tag root line 1
orrectiveActions/><fallback/></ErrorHandler></C></T><Vars/></G></Generic></ro ot>
Run Code Online (Sandbox Code Playgroud)
是否可以将命令配置为静默模式?所以我可以检查$?仅有的?
我需要的是:
xmllint --noout CreDefault.XML
echo $?
1
Run Code Online (Sandbox Code Playgroud) 在Linux系统上定义别名非常简单.
从以下示例中我们看到:I_am_only_ls_alias
alias命令将输出作为ls
命令提供给我们
# alias I_am_only_ls_alias=ls
# I_am_only_ls_alias
Run Code Online (Sandbox Code Playgroud)
输出:
file file1
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在bash脚本(define alias I_am_only_ls_alias
)中做同样的事情时,我得到了I_am_only_ls_alias: command not found
.
我的bash脚本示例:
alias_test.bash
#!/bin/bash
alias I_am_only_ls_alias=ls
I_am_only_ls_alias
Run Code Online (Sandbox Code Playgroud)
运行bash脚本 - alias_test.bash
/tmp/alias_test.bash
Run Code Online (Sandbox Code Playgroud)
输出:
/tmp/: line 88: I_am_only_ls_alias: command not found
Run Code Online (Sandbox Code Playgroud)
所以,首先我要问:
为什么不将bash识别I_am_only_ls_alias
为别名?
为了在bash脚本中定义别名,我需要做些什么?可能吗?
我有以下CSV文件
more file.csv
Number,machine_type,OS,Version,Mem,CPU,HW,Volatge
1,HG652,linux,23.12,256,III,LOP90,220
2,HG652,linux,23.12,256,III,LOP90,220
3,HG652,SCO,MK906G,526,1G,LW1005,220
4,HG652,solaris,1172,1024,2Core,netra,220
5,HG652,solaris,1172,1024,2Core,netra,220
Run Code Online (Sandbox Code Playgroud)
请建议如何剪切CSV文件(通过cut或sed或awk命令)
为了获得部分CSV文件
命令需要获取表示我们要从CSV中剪切的字段的值
根据示例1(值应为6)
例1
在这个例子中,我们从左到右切割了6个字段(在这种情况下,CSV将如下所示)
Number,machine_type,OS,Version,Mem,CPU
1,HG652,linux,23.12,256,III
2,HG652,linux,23.12,256,III
3,HG652,SCO,MK906G,526,1G
4,HG652,solaris,1172,1024,2Core
5,HG652,solaris,1172,1024,2Core
Run Code Online (Sandbox Code Playgroud) 使用以下egrep命令,我从/ etc/hosts文件中获取主机,如下例所示
egrep "Solaris|linux|unix|vms|win|proxy|terminal|unixware" /etc/hosts
192.9.200.12 Solaris1
192.9.200.13 Solaris2
192.9.200.14 Solaris3
192.9.200.15 Solaris4
192.9.200.16 Solaris5
192.9.200.17 linux1
192.9.200.18 linux2
192.9.200.19 linux3
192.9.200.20 linux4
192.9.200.21 linux5
Run Code Online (Sandbox Code Playgroud)
我想要的是添加awk或sed或perl one liner命令,它将仅打印两个第一个匹配主机,如下所示
egrep "Solaris|linux|unix|vms|win|proxy|terminal|unixware" | ...... /etc/hosts
192.9.200.12 Solaris1
192.9.200.13 Solaris2
192.9.200.17 linux1
192.9.200.18 linux2
Run Code Online (Sandbox Code Playgroud) 有时我的bash脚本挂起并保持没有明确的理由
所以他们实际上可以永远挂起(脚本进程会运行直到我杀了它)
是否有可能在bash脚本超时机制中组合以便在例如半小时后退出程序?
我想制作自动化脚本
tcl 或 expect 哪个更适合此任务?
什么是 uniq 在 tcl 中更好?
我有以下CSV文件:
more my_file.csv
Alabama,Alaska,Arizona,Arkansas,California,Colorado,Connecticut,Delaware,Florida,Georgia,Hawaii,Idaho,Illinois,Indiana,Iowa
1000,"1 0 0 1",1002,1002,1003,1004,1005,"1 0 0 6",1007,1008,1009,1010,1011,1012,1013
100," 1 0 1 ",102,102,103,104,105,"1 0 6 2",107,108,109,"1 1 0 3 5 62 0",111,112,113
10001,10011,10021,10021,10031,10041,10051,10061,10071,10081,10091,10101,10111,10121,10131
.
.
.
.
Run Code Online (Sandbox Code Playgroud)
我的目标是在我的bash脚本中设置CSV参数(CSV中的所有状态)及其值
例如 (关于第二行值)
在我的bash脚本中,我将能够读取每个参数
例
echo $Alabama
1000
echo $Alaska
1 0 0 1
Run Code Online (Sandbox Code Playgroud)
首先,我只是尝试编写以下(错误的)代码,以便使用它们的值设置参数:
#!/bin/bash
counter=1
for CSV_COLUMN in Alabama Alaska Arizona Arkansas California Colorado Connecticut Delaware Florida Georgia Hawaii Idaho Illinois Indiana Iowa
do
export $CSV_COLUMN=` echo $CSV_LINE | cut -d',' -f$counter `
counter=$counter+1
done
Run Code Online (Sandbox Code Playgroud)
测试应该是(来自bash脚本)
echo $Alabama …
Run Code Online (Sandbox Code Playgroud)