问题标签 [non-interactive]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
chef-infra - Chef - 从脚本(不使用 EDITOR)以非交互方式编辑属性或数据包的任何最佳实践
我想存储一个构建版本号,以后可以在配方中使用它来解析“源”行中的 msi 路径。此版本特定于环境。我不确定是使用环境属性还是数据包,但无论哪种方式,我都希望能够从脚本更新属性或数据包项(我有一个调用各种 AWS 和刀功能的主 powershell 脚本) .
但是,基本的“刀环境编辑..”或“刀数据包编辑..”默认调用编辑器来手动编辑无法从脚本中使用的定义。
我已经搜索了解决方案并遇到了以下建议,但是是否有任何公认的“最佳实践”或替代方案?
使用“knife environment show ...”将环境或数据包定义转储为 json 文件,并使用标准搜索/替换工具替换 json 文件中的值,然后使用“knife environment edit from file ..”选项。
使用通过 knife exec -E 调用的自定义 ruby 代码(如http://www.getchef.com/blog/2014/01/23/attributes-or-data-bags-what-should-i-use/中的建议)。
顺便说一句,我发现从 powershell 脚本运行它很棘手:在尝试创建数据包的情况下,如果我通过 here-doc 将 ruby 代码设置为变量并调用“knife exec -E $rubycode" 不报错但也不创建数据包?
例如,在我的 powershell 脚本中,为了创建一个我正在尝试的环境(我还没有更新现有环境中的属性):
我收到以下错误,我怀疑这可能与 powershell 解析有关
错误:语法错误:-E 参数:语法错误,意外 $end,期待 '}' api.post('/environments',{
我意识到一些错误很可能是由于 powershell 解析造成的,但我的问题是根据主题 - 是否有最佳实践方法来以非交互方式编辑环境和数据包,无论是来自上面的列表还是其他一些方法?
c# - WPF 应用程序在屏幕旋转时停止交互
我们有一个运行良好的 WPF 应用程序,但用户报告说它在屏幕旋转时锁定。(平板电脑可以做到这一点!)
该应用程序实际上在旋转后完全呈现,但停止响应鼠标/键盘。它不会显示为 Windows 意义上的“无响应”。
我们可以在这里模拟“锁定”,但调试这很奇怪:
- 在 VS 调试器中不会发生锁定
- 如果您尝试附加到锁定的进程,VS 会说该进程是在没有调试信息的情况下构建的
- 在锁定 VS 可以附加/分离到同一个 EXE 进程之前
我们已将跟踪输出放入全局未处理的异常中,但没有触发任何内容。
我只能想到下一步进行调试,即开始破解代码块并找到中断区域。
有人见过这个或有任何建议吗?
谢谢!
git - 如何强制 Git 不提示输入凭据
我git clone
在一个 Bash 脚本中使用,该脚本采用任何类型的 Git 位置(HTTPS、Git、SSH、文件系统......)并将克隆它。但是这个脚本必须在不与任何用户交互的情况下工作。更准确地说,我希望这个脚本不要暂停凭据:如果该位置需要凭据,而 git 无法自行找到它们,我希望 Git 失败。
我的脚本假设如果您没有设置正确的方法来访问这些位置而无需密码,这不是它的问题。但是,解决方案应该提供一种方法来了解失败的原因(例如,输出带有“Authentication Failed”的错误)。
我需要这种行为仅仅是因为它是一个脚本,它将以非交互方式运行(cron 作业、VM 构建......等等......)。我需要它失败并且不冻结我的脚本等待我无法提供它的信息(并且不想)。
因此,在我目前的担忧中,我要求git clone
失败而不是询问凭据。
我没有找到任何选项git clone
来强制不要求提供凭据,最好是在身份验证错误时失败。
shell - 捕获历史进程历史 UNIX?
我想知道是否有办法捕获在非交互式 shell 上执行的进程列表?
基本上我有一个脚本,它从其他来源调用一些变量,我想看看所述变量的值是什么。但是,脚本执行并完成得非常快,因此我无法使用 ps 捕获值。
有没有办法记录进程以及使用了哪些参数?
TIA哈士奇
编辑:
在这种情况下,我使用的是 Solaris。我什至考虑过使用一个快速循环脚本来捕获正在传递的值——但这似乎不太准确,而且我确信执行并不总是被捕获。我试过这个:
我会使用 sleep 但我不能指定任何精度,因为我所有的 sleep 可执行文件都需要一个整数值而不是任何小数值。
bash - bash 将 set -x 的输出存储到日志文件
我有一个简单的下载脚本,我使用set -x
它效果很好;我可以看到它执行的每个步骤,并且可以识别脚本或下载中的错误:
我想自动化这项工作。有没有办法可以将set -x
输出保存到日志文件?也许到一个日志文件 - 或每天不同的日志文件。我不知道什么会最有效。
set -x
以下是上述脚本的示例输出。
c - vim 的高效非交互使用
我使用 vim 以非交互方式将单个 C 语言函数写入文件。首先tags
使用 ctags 创建一个文件。要将main()
函数写入文件func.c
,然后我使用
换句话说,它以非交互方式运行 3 个 vim 命令:
:ta main
跳转到 main():.,/^}/w!func.c
从当前行写入到行首的下一个结束花括号:q
退出
我试图通过不浪费时间读取用户或系统启动文件 ( -U NONE -u NONE
) 并避免创建 .swp 文件 ( -R
) 来提高效率。
还有两个我无法摆脱的障碍:
- 如果这是作为管道的一部分运行的,我会收到
Vim: Warning: Output is not to a terminal
警告和(显然)一秒钟的延迟。 - 如果我保存此命令的标准输出,我仍然会看到许多终端转义序列正在使用,以及
"func.c" 58 lines, 1707 characters written
正在生成的消息。
有没有办法避免这些?
ffmpeg - 如何强制 ffmpeg 进入非交互模式?
有时您希望 ffmpeg 询问您是否应该覆盖文件。有时它只是一个你喜欢的脚本,如果出现问题,它会失败。即,如果您有问题,请不要依赖标准输入来回答。
benchmarking - 如何跳过 phoronix-test-suite 初始问题
我想使用 phoronix-test-suite 对不同提供商的云实例进行基准测试。
然而自动化似乎挂了,因为 phoronix-test-suites 询问三个初始问题以接受许可协议,是否将基准测试结果上传到 openbenchmarking 等等。
我知道可以使用 user-config.xml 文件预先配置批处理运行。但这似乎不足以第一次以非交互方式运行基准测试。
Phoronix-test-suite 仍然会询问其最初的问题,这会阻止自动基准测试
有人可以帮忙吗?是否有另一个文件 phoronix-test-suite 不需要询问其初始问题?
powershell - 使用 Powershell 的非交互式远程命令
我正在开发一个脚本,它使用 ssh 连接到 Windows 主机、运行 powershell 命令并解析输出。虽然我可以连接到主机并运行命令,但在我按下回车键之前,powershell 不会退出并将控制权返回给本地脚本。
目前,正在运行的具体命令是ssh HOSTNAME 'echo $(hostname)'
ssh 服务器配置为将远程执行请求传递给powershell -noninteractive -command CMD
,其中HOSTNAME
是 windows 主机的名称,CMD
是要运行的远程命令(在本例中echo $(hostname)
)。
最终目标是让调用远程 powershell 命令的脚本完全以非交互方式运行,但这目前是不可能的,因为 powershell 命令不会以非交互方式运行。
如何让 powershell 以非交互方式运行远程命令?
git - 为什么非交互式变基上的 Git 提交后挂钩未运行?
给定一个任意的、可执行的 Git 提交后挂钩,它不会在非交互式变基期间运行,根据 GIT-REBASE(1) 手册页,在非交互式模式下,无论是 withrebase --force-rebase
还是 with都不是前者的同义词。rebase --no-ff
rebase --interactive --no-ff
但是通过在提交后运行相同的 Git 钩子进行交互式变基。
有人可以解释这种行为背后的原因吗?