小编Tob*_*ght的帖子

如何使用脚本重置 USB 设备?

我有一个 USB GSM 调制解调器,它并不总是正常工作(华为 E367u-2)有时它会被重置(USB 设备在日志中断开/重新连接),当它恢复时,它有不同的 ttyUSB 号码。有时在启动时,usb_modeswitch似乎只是没有被解雇。计算机是运行 Raspbian 的 Raspberry Pi。

我对此有一个简单的解决方案:每分钟cron运行以下脚本(伪代码):

If WVDIAL is not running:
    Run WVDIAL
Run Code Online (Sandbox Code Playgroud)

我想将脚本更改为:

If /dev/ttyUSB0 is not present:
    If DevicePresent(12d1:1446):
        ResetDevice(12d1:1446)
    ElseIf DevicePresent(12d1:1506)
        ResetUSB(12d1:1506)
If WVDIAL is not running:
    Run WVDIAL
Run Code Online (Sandbox Code Playgroud)

显然这是伪代码,但我需要将以下几行串在一起,但我不知道如何:

如果 wvdial 没有运行,这会加载它:

#! /bin/sh 
# /etc/init.d/wvdial

### BEGIN INIT INFO
# Provides:          TheInternet
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Simple …
Run Code Online (Sandbox Code Playgroud)

scripting usb raspberry-pi raspbian

5
推荐指数
1
解决办法
3424
查看次数

/sys/block/sda1/stat 和 /sys/block/xvda1/stat 有什么区别?

在我的本地机器上,我有/sys/block/sda1/stat.
在亚马逊机器上,我有/sys/block/xvda1/stat.

当我运行cat /sys/block/sda1/statcat /sys/block/xvda1/stat两者都给出 11 个输出字段时。

/sys/block/sda1/stat/sys/block/xvda1/stat文件和有什么不一样?

linux sysfs amazon-ec2

5
推荐指数
1
解决办法
7838
查看次数

我如何知道内核是否已更改?

我有一个场景,我需要在内核更新后重新编译我的显示驱动程序。我正在尝试在启动时使用 Bash 脚本使其自动化。因此,我需要一种方法来知道我的内核已更改,并为新运行的内核重新安装驱动程序。

我正在考虑在第一次安装驱动程序时将内核版本输出到文件中,并在我的脚本中始终检查该文件内容是否与现在安装的内容不同。

这是正确的方法吗?我将不胜感激任何关于如何知道自从我上次安装驱动程序以来内核是否发生变化的建议。

  • 我知道有 DKMS,这正是它的用途,但它并不总是有效,所以我想以不同的方式做到这一点。

kernel upgrade dkms

5
推荐指数
1
解决办法
6278
查看次数

dd 创建的 img 有多大?

这是我第一次使用 dd 命令。我执行:

dd if=/dev/sdb2 of=/mnt/sdc1/Hdd1.img bs=512 conv=noerror,sync
Run Code Online (Sandbox Code Playgroud)

其中 sdb 是损坏的硬盘(大小:500 GB)。我将分区 sdb2 复制到映像中。我已经完成了 6(!!) 天。img 大小约为 640 GB 并且仍在计数(即:它还没有完成......)。6 天它正在打印复制的数据详细信息(它复制到哪个字节)并且它没有停止。

正常吗?img 大小怎么可能大于整个损坏的硬盘大小?什么时候完成?

dd hard-disk

5
推荐指数
1
解决办法
1590
查看次数

如果未安装用户默认 shell 会发生什么?

我在一家大公司担任系统管理员,必须维护多个 Windows 和 Linux (Ubuntu 16.04) 虚拟机。因为我想在 Linux VM 上使用zsh而不是使用bash,所以我必须更改我的默认 shell。

现在,我使用强制 AD 设置的 Windows 域帐户登录 Linux;这意味着我无法更改passwd文件或用于chsh更改我的默认 shell,所以我必须找到另一种方法。这种方式是在 AD 中使用loginShell属性强制执行 shell 。

问题是,如果我登录未安装 zsh 的 Linux VM 会发生什么?它是否回退到bash/ sh,是否卡住或其他什么?

bash active-directory ssh ubuntu zsh

5
推荐指数
1
解决办法
1181
查看次数

当长度未知时,如何从姓氏中删除名字?

我正在尝试编写一个简单的 bash 脚本,用户在其中输入他们的用户名,然后他们会受到欢迎,具体取决于他们姓氏的时间。我目前有以下几点:

echo Please enter your username
read username
name=$(grep $username /etc/passwd | cut -d ':' -f 5)

h='date +%H'

if [ $h -lt 12]; then
  echo Good morning ${name::-3)
Run Code Online (Sandbox Code Playgroud)

等等等等

我已经设法从那里的名字末尾剪掉了 3 个逗号,但我希望能够剪掉第一个名字。

例如:

  • $nameAmber Martin,,,
  • 我已经减少到Amber Martin.
  • 我需要进一步减少到Martin.
  • 这需要使用任何名称。

linux shell text-processing cut

5
推荐指数
2
解决办法
1341
查看次数

我应该如何为 cron 作业设置 HTTP 代理变量?

我有一个 python 脚本,需要从 crontab 运行,通过 HTTP 代理路由所有流量。

/etc/profile我已经在使用中设置了代理

http_proxy=http://192.168.0.1:3128    # (Address changed for privacy)
https_proxy=http://192.168.0.1:3128
export http_proxy
export https_proxy
Run Code Online (Sandbox Code Playgroud)

当然,如果我从终端运行 myscript.py ,效果很好,但是当将作业添加到 crontab 时,它会在运行时恢复使用标准服务器 IP。

确保从 cron 运行的任何 python 脚本使用代理的最安全方法是什么?我确实发现有人提到添加

HTTP_PROXY=http://192.168.0.1:3128
HTTPS_PROXY=http://192.168.0.1:3128
Run Code Online (Sandbox Code Playgroud)

到 crontab 的顶部。当使用简单的 python 脚本测试 IP 检查器网站时,这似乎有效,但这是最安全的方法吗?

除了我发现的一篇旧帖子之外,没有任何关于此的文档。

cron python environment-variables

5
推荐指数
1
解决办法
7042
查看次数

“进程记帐”在 Linux 中是什么意思?

我正在使用Docker in action的书,并且我已经多次看到术语“流程会计”。我处于应用程序上下文的容器化中。我想更多地了解流程会计的概念。谷歌给我找了一些财务会计的文章;我正在寻找与计算机系统相关的含义。

请您解释一下这个概念好吗?

linux terminology container

5
推荐指数
1
解决办法
6136
查看次数

如何将本地日期时间转换为 UTC 日期时间?

我正在尝试让 bash 脚本正常工作,为此我需要将本地时间的+%Y%m%d%H%M%S格式(例如:“20150903170731”)转换为相同格式的 UTC 时间。

我知道date -u可以给我当前的 UTC 时间:

$ date +%Y%m%d%H%M%S  -u
20150903161322
Run Code Online (Sandbox Code Playgroud)

或者,没有-u本地时间(这里是 BST):

$ date +%Y%m%d%H%M%S
20150903171322
Run Code Online (Sandbox Code Playgroud)

现在,如果我向 中添加参数date,则会收到错误消息:

echo "20150903154607" | xargs date +"%Y%m%d%H%M%S" -u
date: extra operand `20150903154607'
Run Code Online (Sandbox Code Playgroud)

有什么办法可以在没有此类错误的情况下执行此转换?

date

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

已安装 MySQL 但未找到 mysql 命令

我正在尝试将 MySQL 5.1.69 服务器社区安装到 RHEL 6 系统上(尽管它已经过时;我想复制此版本中报告的问题)。

我安装了一个 MySQL 5.1 PRM,从 MySQL 档案文件夹下载:

# which mysql
/usr/bin/which: no mysql in (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/myusername/bin)

# mysql -u root -p
-bash: mysql: command not found

# ls /usr/bin/my*
/usr/bin/myisamchk                   /usr/bin/mysql_fix_extensions
/usr/bin/myisam_ftdump               /usr/bin/mysql_fix_privilege_tables
/usr/bin/myisamlog                   /usr/bin/mysqlhotcopy
/usr/bin/myisampack                  /usr/bin/mysql_install_db
/usr/bin/my_print_defaults           /usr/bin/mysql_secure_installation
/usr/bin/mysqlbug                    /usr/bin/mysql_setpermission
/usr/bin/mysql_config                /usr/bin/mysqltest
/usr/bin/mysql_convert_table_format  /usr/bin/mysql_tzinfo_to_sql
/usr/bin/mysqld_multi                /usr/bin/mysql_upgrade
/usr/bin/mysqld_safe                 /usr/bin/mysql_zap
Run Code Online (Sandbox Code Playgroud)

为什么没有mysql程序?

yum rhel software-installation mysql

4
推荐指数
1
解决办法
7151
查看次数