我正在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 来完成此操作?
[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) 我的目录中有很多*.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) 我正在远程主机中并行运行一些查询命令,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) 我正在查看主目录中的“.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
我正在编写一个脚本,但是当找不到某些内容时它会抛出一些错误,我需要忽略这些错误。我的意思是当我运行脚本时,如果不应该显示任何错误,它应该显示积极的结果。
#!/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) 我已经设置了一台运行 Ubuntu 20.04 的服务器,如果由于任何原因断电或重新启动,我希望能够自动运行一个脚本来执行以下操作;
\nsudo systemctl restart ovenmediaengine.service\nexport DISPLAY=:0 && obs --startstreaming &\nRun Code Online (Sandbox Code Playgroud)\n我不确定为什么在服务器重新启动时需要重新启动烤箱媒体引擎服务,它在安装时已经作为服务启用。
\n我已经通过执行以下操作来研究使用 crontab
\nsudo crontab -e\nRun Code Online (Sandbox Code Playgroud)\n并添加到行尾:
\n@reboot /path/to/script.sh\nRun Code Online (Sandbox Code Playgroud)\n脚本文件包含上面写的两行,并且它也被设置为可执行文件。我还尝试在脚本开始时添加几秒钟的延迟,因为这会阻止我在不同项目上重新启动时运行脚本。
\n我该如何检查可能出现的问题?
\n有没有更好的方法来完成我需要在这里做的事情?
\nsudo systemctl status ovenmediaengine.service编辑:以下是重新启动之前和之后的输出:
\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) 我正在创建一个 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) 我运行了如下命令来调试我的脚本,但它不起作用。
$ 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)
请你帮助我好吗?
我知道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启动参数,同时维护现有的启动参数。
我已经尝试过的
cat /etc/default/grub > grub_bkp
echo "intel_pstate=disable" >> grub_bkp
echo gurb_bkp > /etc/default/grub
Run Code Online (Sandbox Code Playgroud)
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)
非常感谢你的帮助!:)