从 .xbindkeysrc 执行命令后退出终端

2024-04-17

我正在尝试使用 .xbindkeysrc 将命令绑定到密钥,即该命令从 keepassxc 检索密码,并将其作为标准输入回显到 openconnect (用于 VPN 连接)命令,最后关闭终端。以下内容完成了所有这些工作,并且有效:

psswd=`keepassxc-cli show -sa password path/to/MYKEEPASS.kdbx MY_ENTRY` ; echo $psswd | sudo openconnect --background --protocol=gp https://my.url --user=MYUSERNAME --passwd-on-stdin ; exit

但是,这不能作为 .xbindkeysrc 中的命令,它需要在终端中执行,这可以通过将前面的代码放在"$()"如下(同样,这有效),但没有“; exit“最后一位(它不起作用),因此运行完整命令后终端不会关闭。

gnome-terminal -e "$(psswd=`keepassxc-cli show -sa password path/to/MYKEEPASS.kdbx MY_ENTRY` ; echo $psswd | sudo openconnect --background --protocol=gp https://my.url --user=MYUSERNAME --passwd-on-stdin)"

Q1:执行完整命令后如何告诉终端关闭?

此外,这种更简单的语法(在"") 由 .xbindkeysrc 理解:

"gnome-terminal -e "sudo openconnect --protocol=gp https://my.url --user=MYUSERNAME""

但只需添加""当我按下绑定键时,完整的命令不足以让 .xbindkeysrc 运行它;这引出了我的第二个问题:

Q2:如何将完整命令集成到.xbindkeysrc中?

多谢


编辑:使用后格里沙·莱维特 https://stackoverflow.com/users/1072229/grisha-levit的回答:

"gnome-terminal -- sh -c 'pass=$(keepassxc-cli show -a password my_keepass_DB my_ENTRY) && printf "%s\n" "$pass" | sudo openconnect --background --protocol=gp https://my.url --user=my_NAME --passwd-on-stdin'"

vpnc-script 有问题,如第 2,5-7 行所示:

没有的位gnome-terminal --确实有效:

sh -c 'pass=$(keepassxc-cli show -a password my_keepass_DB my_ENTRY) && printf "%s\n" "$pass" | sudo openconnect --background --protocol=gp https://my.url --user=my_NAME --passwd-on-stdin'

但这在 .xbindkeysrc 中不起作用


  • 您应该传递命令来运行gnome-terminal作为位置参数而不是使用-e选项。 (IE。gnome-terminal -- cmd arg...)
  • 您不能直接使用 shell 语法,它必须经过例如sh -c.

所以命令可能是这样的:

gnome-terminal -- sh -c 'pass=$(keepassxc-cli show -a password DB ENTRY) && printf "%s\n" "$pass" | sudo openconnect --background --passwd-on-stdin …'

如果有效,它应该在启动后退出终端openconnect命令所以不exit needed.


.xbindkeysrc 中的这个命令没有什么特别的——只需将上面的命令用双引号括起来即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 .xbindkeysrc 执行命令后退出终端 的相关文章

  • git 别名中的 AWK 语句

    我正在尝试创建一个 git 别名来以特定格式打印日志中的所有拉取请求 但是 我在使用 AWK 删除双空格时遇到问题 这是使用以下命令的 git log 的输出 git log merges grep pull request pretty
  • 如何在bash中使用jq从变量中包含的json中提取值

    我正在编写一个 bash 脚本 其中存储了一个 json 值 现在我想使用 Jq 提取该 json 中的值 使用的代码是 json val code lyz1To6ZTWClDHSiaeXyxg redirect to http examp
  • 通过powershell运行ADB命令

    所以我尝试通过 powershell 脚本运行一些 ADB 命令 这是我正在尝试做的一个简单示例 adb shell echo in adb shell su root echo you are now root ls cd data da
  • C程序调用shell脚本

    我有一个小型 C 程序 调用 shell 脚本 myScript sh 我得到的 ret 值为 256 请帮助我了解系统调用出了什么问题 int main int ret ret system myScript sh ret gt gt r
  • if [ -z "${FILE_LIST}" ] 中的 -z 是什么

    遇到了这个 什么是 z在 shell 脚本中if z FILE LIST 是相同的test And man test gives z STRING the length of STRING is zero 注意 在某些平台上 是一个符号链接
  • jq:将对象数组转换为对象

    我收到了来自curl的回复 格式如下 list value 1 id 12 value 15 id 13 value 4 id 14 给定 id 之间的映射 如下所示 12 newId1 13 newId2 14 newId3 我想做这个
  • 如何在 Windows 下向 .sh 脚本传递参数?

    我正在尝试在 Windows 下执行 sh 脚本 我安装了 Git 它允许我执行 sh 文件 但是 如果不使用 sh 作为执行前缀 我似乎无法传递任何参数 我的 sh 文件 echo Test 1 如果我用以下命令执行它 gt sh tes
  • sed 错误“未终止的 's' 命令”故障排除

    我正在构建一个script https stackoverflow com questions 4036832 replacing a specific term in an xml file其中 它将用文件夹路径替换 XML 文件中的模式
  • Linux:在文件保存时触发 Shell 命令

    我想在修改文件时自动触发 shell 命令 我认为这可以通过注册 inotify 挂钩并调用来在代码中完成system 但是是否有更高级别的 bash 命令可以完成此任务 尝试 inotify 工具 我在复制链接时遇到问题 抱歉 但 Git
  • 在 iOS 模拟器中安装应用程序的脚本

    我正在尝试自动化构建应用程序 运行单元测试以及最终运行 UI 测试的过程 我正在通过命令行 xcodebuild sdk iphonesimulator6 0 在某个目录中构建应用程序 如何通过命令行 在 Library Applicati
  • 如何以管理员身份在 rake 任务中运行 shell 命令?

    我有一个简短的 cmd 文件 我想将其作为部署过程的一部分运行 不幸的是 cmd 文件需要管理员权限 是否可以从 rake 中获得管理员权限 或者我是否需要以管理员身份启动 shell 您可以尝试runas http ss64 com nt
  • 使用 awk 读取文件并搜索另一个文件

    我正在读取一个文件 每行都有数字 我需要搜索另一个满足这些数字和其他条件的文件 我正在尝试使用 awk 来做到这一点 但遇到了问题 File a txt 1476 1477 1497 现在我需要打印第 12 列包含这些数字的行以及第 3 列
  • 为什么我可以直接从 bash 执行 JAR?

    我是一个长期从事 Java 工作的人 并且知道运行带有主类的 JAR 的方法MANIFEST MFJar 中的文件很简单 java jar theJar jar 我用它来启动 Fabric3 服务器 包含在bin server jar在其标
  • bash中的用户名、密码程序

    我有一个程序 要求用户输入用户名和密码 然后将其存储在文本文件中 第一列是用户名 第二列是密码 我需要一个命令 在用户输入用户名和新密码时替换密码 如下我拥有的 bin bash admin menu Register User echo
  • shell-out 值到 md5(加密)函数

    我正在寻找一种解决方案 我正在构建 JSON 记录 并需要在 JQ 中生成一些文本 但将此文本通过管道传输到 MD5 求和函数并将其用作键的值 echo first John last Big jq id first last md5 通过
  • 将二进制输出从文件输出重定向到 stdout

    我有一个专有的二进制文件 它顽固地接受两个文件作为参数 第一个作为输入 第二个作为输出 我想 构建第一个参数 不创建临时文件 使二进制写入标准输出而不是输出文件 第二个参数 我解决了第一个问题 lt 但不确定第二个参数 我编写了以下脚本 看
  • 如何在 Bash 中给定超时后终止子进程?

    我有一个 bash 脚本 它启动一个子进程 该进程时不时地崩溃 实际上是挂起 而且没有明显的原因 闭源 所以我对此无能为力 因此 我希望能够在给定的时间内启动此进程 如果在给定的时间内没有成功返回 则将其终止 有没有simple and r
  • Linux - 从第二个选项卡获取文本

    假设我们有这样的文件 一些文本11 一些文本12 一些文本13 一些文本21 一些文本22 一些文本23 文本由制表符分隔 我们知道第 1 列中的一些文本 但希望从第 2 列中获取文本 我知道我可以通过以下方式获取线路 grep somet
  • Bash 脚本:自动为 mpeg-dash 进行 ffmpeg 编码

    我正在编写一个 bash 文件来创建视频编码和串联 以供 dash 实时流媒体使用 基本上 它读取输入视频文件夹 将所有视频编码为三种分辨率格式 然后将它们连接起来创建三个适应集 DIAGRAM 该脚本检查 fps 一致性 如果输入不是 1
  • 符合 POSIX 标准的 shell 相当于 Bash“while read -d $'\0' ...”?

    我正在尝试使 Bash 脚本严格符合 POSIX 标准 即消除任何潜在的 Bashisms http mywiki wooledge org Bashism 通过使用checkbashisms px script filename 在给定的

随机推荐

  • FASM 是否使用 Intel 语法?

    我尝试在 FASM 中编译以下代码 mov DWORD PTR ebp 4 1234567 它给了我一个 无效表达式 错误 但是以下代码有效 mov DWORD ebp 4 1234567 那么 FASM 是否使用 Intel 语法 我假设
  • 如何使用 OOP 运行存储在容器中的实际对象的函数?

    如何使用 OOP 运行存储在容器中的实际对象的函数 背景 我正在编写一个游戏 有 4 间相连的房间 有两种不同的房间类型和两种不同的玩家类型 玩家应该作为线程运行 杀手应该在行动室中与普通玩家进行战斗 在第二种类型的房间里 不应该发生任何事
  • VBScript 条件短路解决方法

    我有一个必须维护的大型经典 ASP 应用程序 并且我多次发现自己因缺乏短路评估能力而受挫 例如 VBScript 不会让你逃脱 if not isNull Rs myField and Rs myField lt gt 0 then 因为如
  • C浮点精度[重复]

    这个问题在这里已经有答案了 可能的重复 浮点比较 https stackoverflow com questions 7011184 floating point comparison 我对 C C 中浮点数的准确性有疑问 当我执行下面的程
  • 如何使用 sprintf 附加字符串?

    我面临着一个严重的问题sprintf 假设我的代码片段是 sprintf Buffer Hello World sprintf Buffer Good Morning sprintf Buffer Good Afternoon 几百次冲刺
  • 如何给计时器添加 5 秒

    我正在尝试制作一个显示以下时间的计时器 小时 分钟 秒 毫秒 这是我的代码 var timer NSTimer var startTime NSTimeInterval func updateTime var currentTime NSD
  • 当针对 Flex 4 sdk 时,Flex builder3 不会生成 html 包装器

    在 Flex builder 3 中 当我创建一个针对 Flex 4 sdk 的新 Flex 应用程序时 它不会生成 html 包装文件 我在网上寻找答案 但没有成功 我已确保在项目属性中选中该框以生成 html 包装器 唯一的解决方法是针
  • 为 Android 构建 Valgrind

    使用 ndk r6 或 ndk r8d 在 ubuntu 12 04 上构建 valgrind 3 8 1 失败 并出现以下错误 cc1 Error not rekognized option marm priv main globals
  • VSCode 调试器附加到本地进程

    PyCharm 的一大特色是它允许其调试器附加到本地运行 以及 IDE 外部 的 python 进程 当我尝试迁移到 VSCode 以在 Python 中工作时 我很难配置启动 json模拟 PyCharm 的附加到本地进程功能 name
  • 如何强制 Angular cli 从绝对位置而不是 base-href 提供包文件

    我正在努力将使用 cli 构建的 Angular 4 项目部署到 Spring boot 服务器 In the angular cli json我添加了 outdir 属性 它指向 Spring webapp 文件夹内的自定义文件夹 可以直
  • Swagger UI 嵌套可扩展分组

    我正在使用 SwaggerUI 来记录 API 端点 目前 它们按控制器名称分组在一个长列表中 然后 您可以展开每个控制器来查看操作 一切标准 我想做的是将控制器分组到常见的可扩展组下 例如 您有一个宠物组 可以将其展开以显示猫和狗控制器
  • 如何在 Listview 绑定 Xamarin.Forms 内创建网格

    如何使用数据绑定在 ListView 内创建网格 我正在使用 Xamarin Forms 创建这个应用程序 如果我不知道需要多少行和列 如何在 ListView 绑定内动态创建网格 这是我到目前为止所拥有的
  • 如何在BehaviorSubject中设置默认值

    可能是一个菜鸟问题 如何为BehaviorSubject 设置默认值 我有一个具有 2 个不同值的枚举 enum class WidgetState HIDDEN VISIBLE 以及发出状态的行为主体 val widgetStateEmi
  • 使用 JMockit 模拟私有静态字段?

    我有一个像下面这样的课程 class ClassA private static File myDir myDir is created at some stage private static String findFile final
  • 预编译 JavaScript 模板以在项目构建时发挥作用

    Update我想避免在客户端编译模板 并在本地 ant 构建过程中编译它们 也许像将 jQuery 和 jQuery 模板加载到 rhino 中 传递 template 依次处理每个 jst 文件的内容 并构建一个 templates js
  • GNU Make 获取父目标名称

    在gnu make中 有没有办法获取启动整个链的原始目标并将执行引导到当前配方 PHONY all clean common all common clean common common echo echo MAKECMDGOALS for
  • PreparedStatement缓存——它是什么意思(它是如何工作的)

    例如 我使用 c3p0 和一些定义的 maxStatements 来进行准备语句缓存 这个缓存到底有什么作用 它缓存什么样的数据 在什么级别 数据库 应用程序 从例子中理解它会很好 例如我有一个查询 从某个表中选择 其中某个列 现在我在未缓
  • 来自 bash 脚本的电子邮件

    bin bash MESSAGE Line one n MESSAGE MESSAGE Line two n MESSAGE MESSAGE Line three echo MESSAGE mail s test email protect
  • 进入编辑模式时保持 UITableViewCell 背景颜色

    我已经为所有 UITableViewCell 设置了背景颜色 但是 当我单击 UIBarButtonItem 编辑 时 删除和可拖动图标会扭曲背景颜色 使其后面出现白色背景 有没有办法解决 如有必要 我可以显示代码 但这似乎是一个非常简单的
  • 从 .xbindkeysrc 执行命令后退出终端

    我正在尝试使用 xbindkeysrc 将命令绑定到密钥 即该命令从 keepassxc 检索密码 并将其作为标准输入回显到 openconnect 用于 VPN 连接 命令 最后关闭终端 以下内容完成了所有这些工作 并且有效 psswd