如何使用密码自动进行SSH登录?我正在配置我的测试虚拟机,所以没有考虑高安全性。选择 SSH 以获得可接受的安全性,且配置最少。
前任)
echo password | ssh id@server
Run Code Online (Sandbox Code Playgroud)
这不起作用。
我记得我是用一些技巧来做到这一点的,有人指导我,但我现在不记得我使用的技巧了......
我的系统配置脚本执行“apt-get install -y postfix”。不幸的是,当 postfix 安装程序显示配置屏幕时,脚本会停止。有没有一种方法可以强制 postfix 在安装过程中使用默认值,以便自动化脚本可以持续到最后?
postfix 安装程序是否可能会检查 /etc/postfix 中的现有配置,如果存在,不要用配置屏幕打扰用户?
我用expect试过这个,但没有用:它最后关闭了连接。
我们可以通过 ssh 运行一个脚本来登录远程机器,运行命令,而不是断开连接吗?
所以在一台机器上ssh,cd到某某目录,然后运行一条命令,保持登录状态。
-乔纳森
(希望我用过)
#!/usr/bin/expect -f
set password [lrange $argv 0 0]
spawn ssh root@marlboro "cd /tmp; ls -altr | tail"
expect "?assword:*"
send -- "$password\r"
send -- "\r"
interact
Run Code Online (Sandbox Code Playgroud) 我公司正在将所有用户从旧的 Windows XP 计算机升级到新的四核 Win7 计算机。这是一件好事——我们早就应该升级我们的工作站了——但我现在花了大量时间配置新计算机。有没有办法自动化这个过程?
我几乎在每台计算机上执行的步骤:
在那之后我还做了一些其他的事情,这些事情可以很好地自动化,但由于许可证密钥、密码等原因,不太可能。
我知道可以创建计算机的完整映像,但是如何使用不同的硬件/驱动程序?Win7 许可证密钥呢?如果有一种方法可以使这项工作发挥作用,那么最好的(最好是免费/开源)软件是什么?
如果我有一个脚本需要在多台计算机上运行,或者有多个不同的参数,我如何并行执行它,而不必产生产生新PSJobStart-Job的开销?
例如,我想重新同步所有域成员的时间,如下所示:
$computers = Get-ADComputer -filter * |Select-Object -ExpandProperty dnsHostName
$creds = Get-Credential domain\user
foreach($computer in $computers)
{
$session = New-PSSession -ComputerName $computer -Credential $creds
Invoke-Command -Session $session -ScriptBlock { w32tm /resync /nowait /rediscover }
}
Run Code Online (Sandbox Code Playgroud)
但我不想等待每个 PSSession 连接并调用命令。如果没有乔布斯,这如何并行完成?
在我的组织中,我与一群 NOC 员工、初出茅庐的初级工程师和少数高级工程师一起工作;所有这些都专注于 Linux。公司培养人才的一个有趣步骤是,有一条从 NOC 到高级工程队伍的途径。将人才库视为一个相对较新的人,我发现随着时间的推移,技能组合存在分歧……
一些员工之间的一个区别因素是他们对脚本、自动化和配置管理方法的接受程度。例如,我们有两名工程师负责 Amazon AWS CloudFormation的大部分工作,另一名负责处理大部分Puppet基础设施。也许四分之一的工程师精通 BASH shell 脚本。
在就业市场对DevOps 技能的需求非常高的背景下,我很好奇其他组织如何促进这些技能的发展并培养他们的内部人才。脚本编写似乎不是一个特别可教的概念。
根据定义到 group_vars 中的变量的值(真/假),我试图在 vars 文件中定义一些变量。它们的值取决于组变量的值。
我当前的 var 文件如下所示:
{% if my_group_var %}
test:
var1: value
var2: value
...
varn: value
{% else %}
test:
var1: other_value
var2: other_value
...
varn: other_value
{% endif %}
Run Code Online (Sandbox Code Playgroud)
对于我的每一个角色,我都使用了一个定义在这个文件中的变量。
我的测试手册如下所示:
- name: blabla
hosts: blabla
vars_files:
- <path>/test_vars.yml
roles: blabla
Run Code Online (Sandbox Code Playgroud)
运行剧本后我收到的错误是:
{% if my_group_var %}
^ here
exception type: <class 'yaml.scanner.ScannerError'>
exception: while scanning for the next token
found character that cannot start any token
in "<unicode string>"
Run Code Online (Sandbox Code Playgroud)
我在这里做一些愚蠢的事情还是什至不支持?我试图找到另一种定义这些变量的方法(我有很多),但我没有设法在这里得到一些功能。有什么建议?
我发现我经常为我的许多客户设置几乎相同的服务器和 VPS,这可能非常耗时。通常,每次部署之间唯一变化的是要提供服务的不同网站。有没有一种简单的方法可以使所有这些自动化并消除设置 56 个相同服务器的无聊单调?
到目前为止,我部署的服务器只是 Ubuntu,但我可能会开始使用其他 linux 操作系统甚至 Windows。到目前为止,我已经看过 Capistrano,但它似乎专注于编写小的 ruby 程序来完成这项工作,而我根本没有任何知识
我需要在所有表的所有列中执行这些语句。
alter table table_name charset=utf8;
alter table table_name alter column column_name charset=utf8;
Run Code Online (Sandbox Code Playgroud)
是否可以在 MySQL 中以任何方式自动执行此操作?我宁愿避免 mysqldump
更新:Richard Bronosky 向我展示了方式:-)
我需要在每个表中执行的查询:
alter table DBname.DBfield CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
Run Code Online (Sandbox Code Playgroud)
生成所有其他查询的疯狂查询:
SELECT distinct CONCAT( 'alter table ', TABLE_SCHEMA, '.', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;' ) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'DBname';
Run Code Online (Sandbox Code Playgroud)
我只想在一个数据库中执行它。一口气执行所有操作花费的时间太长。事实证明,它为每个表的每个字段生成一个查询。每个表只需要一个查询(与救援不同)。在文件上获取输出是我实现它的方式。
如何生成输出到文件:
mysql -B -N --user=user --password=secret -e "SELECT distinct CONCAT( 'alter table ', TABLE_SCHEMA, '.', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;' …Run Code Online (Sandbox Code Playgroud) 在自动化工具中克隆 git 存储库时 - Web 前端、CI 系统,有时 git clone 调用会打开一个提示,要求输入用户名和密码(例如,当克隆不存在的 Github 存储库或在缺少 ssh 密钥的新节点上时)。
如何让 git 失败(最好带有合理的错误消息和退出代码)而不是等待服务器进程为其提供用户名和密码?
automation ×10
deployment ×2
linux ×2
ssh ×2
ansible ×1
apt ×1
git ×1
installation ×1
jinja ×1
mysql ×1
password ×1
performance ×1
postfix ×1
powershell ×1
puppet ×1
scripting ×1
sql ×1
ubuntu ×1
vps ×1
windows-7 ×1