标签: scripts

nmcli,如何获取设备的“connection.id”或“general.name”

我正在16.04写一个脚本;通过列出活动连接来显示连接标识,尤其是 VPN连接

ip -o link sh up | awk 'BEGIN{FS=": "} $2!="lo" {print $2}'

并得到:

enp0s25  
ppp0
Run Code Online (Sandbox Code Playgroud)

现在我想获取/返回连接名称,与以下内容相同:

#: nmcli  con sh --active
NAME             UUID                                  TYPE            DEVICE  
VPN-pptp-01      22222222-2222-f48f-99d0-817335722def  vpn             enp0s25 
enp0s25          11111111-1111-43c9-9577-112ae6f11abc  802-3-ethernet  enp0s25
Run Code Online (Sandbox Code Playgroud)

使用之前返回的活动设备 ID,特别是对于 ppp0 (从上面)

如何使用nmcli或 D-Bus 来完成此操作?

scripts network-manager networking nmcli

2
推荐指数
1
解决办法
1万
查看次数

如何定期运行 systemd 服务?

[Unit]
Description=captive portal automation

[Service]
Type=simple

ExecStart=/usr/bin/python /home/pi/do.py
Restart=on-failure
RestartSec=5
Run Code Online (Sandbox Code Playgroud)

以上是caportal.service在Ubuntu 14.04机器上运行的一个名为systemd服务的内容。我需要每 30 分钟重复一次该服务。我怎样才能做到这一点 ?

/home/pi/do.py

import requests,json
import netifaces as ni
import commands as cm


gateway=ni.gateways()['default'][ni.AF_INET][0]

IPaddr=ni.ifaddresses('wlan0')[ni.AF_INET][0]['addr']
mac=ni.ifaddresses('wlan0')[ni.AF_LINK][0]['addr'].upper().replace(':','-')
ssid=cm.getoutput('iwgetid -r')
Home="http://"+gateway+":8010/"

URL=Home+"login.html"
print URL
d={}
d['IdSession']=mac
d['Language']='English'
d['refrescar']='0'
d['ip']=IPaddr
d['mac']=mac
d['DSP']=Home
d['AC']='1'
d['userlog']='vishnu'
d['userpass']='12345'
d['read']='checkbox'
d['Login']='+++Go+++'

try:
    if ssid=='machCochin':
        r=requests.post(URL,data=d)
        print r.status_code
        #raise ValueError("ERROR simulated")
    else:
        print "network is not machCochin"
except Exception as e:
    pass
Run Code Online (Sandbox Code Playgroud)

scripts services systemd

2
推荐指数
1
解决办法
9313
查看次数

用户如何在 bash 脚本中将文件转换为 Linux 格式?

我的目录中有很多*.c文件。*.h我想将所有这些文件转换为Linux兼容的格式。我尝试执行以下脚本并且它运行但没有任何转换。

我还需要检查所有内容是否都已成功转换。因此,我对其输出进行过滤并将其与目录中的原始文件进行比较。

我该如何解决它?

#!/bin/bash

function  converting_files() {

   cd "/path/to/dir" &&  find . -type f -print0 | xargs -0 | dos2unix

}

function success_of_converting_files() {

 FILES=colsim_xfig/xfig.3.2.5c/*
 #There are 250 files in the dir and not all but most of them are .c and .h
 for i in {000..249} ; do                 
   for f in "$Files" ; do 
   #I think *.txt line ending is fine as we only want to compare
     dos2unix < myfile{i}.txt | cmp -s …
Run Code Online (Sandbox Code Playgroud)

command-line bash scripts

2
推荐指数
1
解决办法
1665
查看次数

如何使 xargs 并行执行但一次显示单个实例的完整输出?

我正在远程主机中并行运行一些查询命令,xargs该命令运行高效且运行良好,但在查找从哪个主机获取查询时遇到一些问题。

现在执行此操作的脚本部分如下所示:

export commands="cmd1; cmd2; "
hosts=("host1" "host2" "host3" "host4")
MaxInstance=10
echo_var(){
   echo "Executing in $1:"; sleep 1; echo "Output of: $commands"; return 0;
}
export -f echo_var
printf "%s\n" ${hosts[@]} | xargs -n 2 -P $MaxInstance -I {} $(command -v bash) -c 'echo_var "$1"' _ {}
Run Code Online (Sandbox Code Playgroud)

其输出应如下所示,因为sleep 1

Executing in host1:
Executing in host2:
Executing in host3:
Executing in host4:
Output of: cmd1; cmd2; 
Output of: cmd1; cmd2; 
Output of: cmd1; cmd2; 
Output of: cmd1; …
Run Code Online (Sandbox Code Playgroud)

bash scripts xargs

2
推荐指数
1
解决办法
2225
查看次数

IF bash 语句中有哪些不同的选项(-f、-d、-n)?

我正在查看主目录中的“.profile”文件,我看到该IF语句使用了不同的选项:

if [ -n "$BASH_VERSION" ]; then...
...
if [ -f "$HOME/.bashrc" ]; then...
...
if [ -d "$HOME/bin" ] ; then...
...
Run Code Online (Sandbox Code Playgroud)

这里以及其他 bash 脚本中的-n -f和选项的含义和用途是什么?-d

command-line bash scripts

2
推荐指数
1
解决办法
2万
查看次数

如何忽略shell脚本中的错误?

我正在编写一个脚本,但是当找不到某些内容时它会抛出一些错误,我需要忽略这些错误。我的意思是当我运行脚本时,如果不应该显示任何错误,它应该显示积极的结果。

#!/bin/sh
boot=$(ls /bootpool | grep boot | awk 'NR==1{print $1}')
data=$(ls /datapool | grep boot | awk 'NR==1{print $1}')
echo "boot"
if [ "$boot" == "boot" ] 
then
    echo "boot"
    pass=$(grep rootpw /bootpool/boot/loader.conf| grep -o '".*"' | sed 's/"//g' | awk 'BEGIN { ORS = " " } { print }')
elif [ "$data" == "boot" ]
then
    pass=$(grep rootpw /datapool/boot/loader.conf| grep -o '".*"' | sed 's/"//g' | awk 'BEGIN { ORS = " " } { print }') …
Run Code Online (Sandbox Code Playgroud)

scripts

2
推荐指数
1
解决办法
2万
查看次数

如何在重新启动时运行脚本来重新启动服务并启动 GUI 应用程序?

我已经设置了一台运行 Ubuntu 20.04 的服务器,如果由于任何原因断电或重新启动,我希望能够自动运行一个脚本来执行以下操作;

\n
sudo systemctl restart ovenmediaengine.service\nexport DISPLAY=:0 && obs --startstreaming &\n
Run Code Online (Sandbox Code Playgroud)\n

我不确定为什么在服务器重新启动时需要重新启动烤箱媒体引擎服务,它在安装时已经作为服务启用。

\n

我已经通过执行以下操作来研究使用 crontab

\n
sudo crontab -e\n
Run Code Online (Sandbox Code Playgroud)\n

并添加到行尾:

\n
@reboot /path/to/script.sh\n
Run Code Online (Sandbox Code Playgroud)\n

脚本文件包含上面写的两行,并且它也被设置为可执行文件。我还尝试在脚本开始时添加几秒钟的延迟,因为这会阻止我在不同项目上重新启动时运行脚本。

\n

我该如何检查可能出现的问题?

\n

有没有更好的方法来完成我需要在这里做的事情?

\n

sudo systemctl status ovenmediaengine.service编辑:以下是重新启动之前和之后的输出:

\n
\xe2\x97\x8f ovenmediaengine.service - OvenMediaEngine\n     Loaded: loaded (/lib/systemd/system/ovenmediaengine.service; enabled; vendor preset: enabled)\n     Active: active (running) since Wed 2022-07-13 08:03:46 BST; 13min ago\n    Process: 670 ExecStart=/usr/bin/OvenMediaEngine -d (code=exited, status=0/SUCCESS)\n   Main PID: 750 (OvenMediaEngine)\n      Tasks: 24 (limit: 4611)\n     Memory: 23.3M\n     CGroup: /system.slice/ovenmediaengine.service\n …
Run Code Online (Sandbox Code Playgroud)

reboot bash root scripts cron

2
推荐指数
1
解决办法
2168
查看次数

如果今天的日期已经过了 X 日期,则在 Ubuntu Bash 脚本中执行内容

我正在创建一个 bash 脚本许可证系统。我想制作一个名为 End-Date 的系统,该系统将检查今天的日期是否已经过了特定日期,然后我想运行命令。通过示例您会更好地理解它。

例如

#Lets say today is 30.08.2022
scriptdate=30.08.2022
enddate=29.08.2022
#If the $scriptdate has passed the $enddate then run exit command
Run Code Online (Sandbox Code Playgroud)

command-line bash scripts

2
推荐指数
1
解决办法
1514
查看次数

为什么 sed 命令输出“char 5:未终止的`s'命令”

我运行了如下命令来调试我的脚本,但它不起作用。

$ L="Thanh,Fri 11 Nov, Mon 14 Nov,LX,VN" 
$ B="Fri 11 Nov, Mon 14 Nov"
$ N="11.11-14.11"
$ sed 's/'$B'/'$N'/' <<< $L
sed: -e expression #1, char 5: unterminated `s' command
Run Code Online (Sandbox Code Playgroud)

请你帮助我好吗?

command-line bash scripts sed

2
推荐指数
1
解决办法
337
查看次数

如何编写修改 Ubuntu 内核启动参数的 .sh 文件?

我知道GRUB内核启动参数,例如可以通过和 然后panic=-1添加。sudo nano /etc/default/grubsudo update-grub

我的应用程序附带了一个setup.shshell 脚本,可以为用户设置一切,因为我希望非技术型用户也能使用它。无论如何,一个名为的驱动程序intel_pstate使我的应用程序无法工作,因此在intel_pstate检测到的设备上,我希望该setup.sh文件添加intel_pstate=disable到内核启动参数/启动行。

我真的不想告诉用户自己编辑启动参数,我正在寻找一种方法,在 shell 脚本代码中添加intel_pstate=disable启动参数,同时维护现有的启动参数。

我已经尝试过的

  • 使用此代码(在 sudo bash shell 中):
cat /etc/default/grub > grub_bkp
echo "intel_pstate=disable" >> grub_bkp
echo gurb_bkp > /etc/default/grub
Run Code Online (Sandbox Code Playgroud)
  • 这不起作用,以以下 /etc/default/grub 文件为例:
GRUB_OTHER_STUFF=1
...
GRUB_CMDLINE_LINUX_DEFAULT='panic=-1 init=/my/cool/file.sh'
Run Code Online (Sandbox Code Playgroud)
  • 我的脚本完成后,它将如下所示,未成功应用内核启动参数:
GRUB_OTHER_STUFF=1
...
GRUB_CMDLINE_LINUX_DEFAULT='panic=-1 init=/my/cool/file.sh'
intel_pstate=disable
Run Code Online (Sandbox Code Playgroud)

非常感谢你的帮助!:)

command-line boot grub2 bash scripts

2
推荐指数
1
解决办法
823
查看次数

标签 统计

scripts ×10

bash ×7

command-line ×5

boot ×1

cron ×1

grub2 ×1

network-manager ×1

networking ×1

nmcli ×1

reboot ×1

root ×1

sed ×1

services ×1

systemd ×1

xargs ×1