小编Pat*_*ttu的帖子

如何使用Ansible在远程服务器上执行shell脚本?

我打算使用Ansible playbook在远程服务器上执行shell脚本.

test.sh:

touch test.txt
Run Code Online (Sandbox Code Playgroud)

剧本:

---
- name: Transfer and execute a script.
  hosts: server
  user: test_user
  sudo: yes
  tasks:
     - name: Transfer the script
       copy: src=test.sh dest=/home/test_user mode=0777

     - name: Execute the script
       local_action: command sudo sh /home/test_user/test.sh
Run Code Online (Sandbox Code Playgroud)

当我运行playbook时,传输成功,但脚本没有执行.

shell remote-server ansible ansible-playbook

48
推荐指数
4
解决办法
14万
查看次数

创建具有多个密钥对的ec2实例

在创建ec2实例时,我们提供密钥对名称.

但通常,我将多个ssh公钥/私钥与任何远程服务器关联.我知道一旦创建了ec2服务器,就无法附加密钥对.所以我想知道在创建实例时是否可以使用多个密钥对.

cloud ssh ssh-keys boto amazon-web-services

23
推荐指数
3
解决办法
3万
查看次数

命令未找到 - 哦-My-Zsh

我最近在我的Mac上安装了zsh和oh-my-zsh.现在当我尝试从终端运行maven命令时,我收到以下错误.

$ mvn install
zsh: command not found: mvn
Run Code Online (Sandbox Code Playgroud)

我在/ Applications目录中安装了Apache maven.目前我的.zshrc文件如下所示.

plugins=(git brew pip mvn mysql-macports python sublime tmux osx)

# ####################
# Maven Config Options
# ####################
export M2_HOME=/Applications/apache-maven-3.3.3
export PATH=$PATH:M2_HOME/bin
Run Code Online (Sandbox Code Playgroud)

如上所示,我将maven安装的位置附加到路径.但我仍然遇到错误.任何帮助表示赞赏.

macos zsh maven oh-my-zsh

20
推荐指数
7
解决办法
4万
查看次数

Django select_related过滤器

我有以下Django模型.

class A(models.Model):
    tmp = models.ForeignKey(B)
    active = models.BooleanField()

class B(models.Model):
    active = models.BooleanField()
    archived = models.BooleanField()
Run Code Online (Sandbox Code Playgroud)

现在我有以下查询.

A.objects.select_related(B).filter(active=True)
Run Code Online (Sandbox Code Playgroud)

现在,这将获取B的所有对象.现在,如何在模型的子句中包含过滤器active=True和过滤器.archived=Falseselect_relatedB

python django django-queryset

13
推荐指数
1
解决办法
8482
查看次数

在C++中有效地读取非常大的文本文件

我有一个非常大的文本文件(45GB).文本文件的每一行包含两个空格分隔的64位无符号整数,如下所示.

4624996948753406865 10214715013130414417

4305027007407867230 4569406367070518418

10817905656952544704 3697712211731468838 ......

我想读取文件并对数字执行一些操作.

我在C++中的代码:

void process_data(string str)
{
    vector<string> arr;
    boost::split(arr, str, boost::is_any_of(" \n"));
    do_some_operation(arr);
}

int main()
{
    unsigned long long int read_bytes = 45 * 1024 *1024;
    const char* fname = "input.txt";
    ifstream fin(fname, ios::in);
    char* memblock;

    while(!fin.eof())
    {
        memblock = new char[read_bytes];
        fin.read(memblock, read_bytes);
        string str(memblock);
        process_data(str);
        delete [] memblock;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我对c ++比较陌生.当我运行此代码时,我遇到了这些问题.

  1. 由于以字节读取文件,有时块的最后一行对应于原始文件中的未完成行("4624996948753406865 10214"而不是主文件的实际字符串"4624996948753406865 10214715013130414417").

  2. 这段代码运行得非常慢.在具有6GB RAM的64位Intel Core i7 920系统中运行一个块操作需要大约6秒.是否有任何可用于改善运行时的优化技术?

  3. 是否有必要在boost分割功能中包含"\n"和空白字符?

我已经阅读了关于C++中的mmap文件,但我不确定这是否是正确的方法.如果是,请附上一些链接.

c++ linux boost mmap external-sorting

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

使用Python请求库构建URL

我有一个基本URL。

BASE_URL = 'https://api.github.com/licenses'
Run Code Online (Sandbox Code Playgroud)

我想基于附加到基本URL的搜索词(Ex-mit)创建一个新的URL。

NEW_URL = 'https://api.github.com/licenses/mit'
Run Code Online (Sandbox Code Playgroud)

我正在使用请求库来构建和调用URL,如下所示。

from requests.compat import urljoin

base_url = 'https://api.github.com/licenses'
new_url = urljoin(base_url, 'mit')
print new_url
Run Code Online (Sandbox Code Playgroud)

但是当我打印new_url时,它弄乱了URL。

https://api.github.com/mit
Run Code Online (Sandbox Code Playgroud)

我不确定如何解决此问题。

python url python-requests

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

在基于amazon linux AMI的ec2实例上安装sshpass

我计划自动化aws-rackspace服务器迁移.我正在关注使用rsync进行迁移的官方机架文档(https://github.com/cloudnull/InstanceSync/blob/master/rsrsyncLive.sh).我修改了代码以使用sshpass在与远程服务器建立SSH连接时动态提供登录密码.

sshpass -p "YOUR_PASSWORD" ssh -o StrictHostKeyChecking=no username@IPAddress
Run Code Online (Sandbox Code Playgroud)

但是我在安装sshpass包时遇到了麻烦.

Debian based Distros - Installed Successfully
CentOS - Installed Successfully
Redhat - Package not found (yum list available | grep sshpass) 
Amazon Linux -  Package not found (yum list available | grep sshpass) 
Run Code Online (Sandbox Code Playgroud)

我甚至试过'yum update'然后'yum -y install sshpass'但它没有用.

谢谢,

linux ssh yum amazon-web-services rackspace-cloud

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

Ansible MySQL授权

我想使用Ansible test_db向用户(test_user)授予db()特权。我的命令如下所示。

grant all PRIVILEGES on <test_db>.* to <test_user>@'localhost';
Run Code Online (Sandbox Code Playgroud)

我将如何使用Ansible执行命令。

mysql database ansible

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

带参数的Django模型属性

我在Django中有以下模型。

class User(models.Model):
    name = models.CharField(max_length=50)
    ...
    ...

    @property
    def get_info(self, key=None):
        value = self.name if key else 'Hello World'
        return value
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试在Django Shell中执行代码时,出现以下错误。

n [4]: user = User.objects.get(id=1)
n [5]: user.get_info(key='test_key')
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-5-f7b917070aee> in <module>()
----> 1 user.get_info(key='test_key')

TypeError: _get_info() takes exactly 2 arguments (1 given)
Run Code Online (Sandbox Code Playgroud)

python django properties

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

使用Ansible使用virtualenv信息更新bashrc

我有一个在远程服务器上运行的python virtualenv.我正在尝试使用Ansible使用以下信息更新远程服务器的bashrc.

export WORKON_HOME=~/TestEnvs
source /usr/local/bin/virtualenvwrapper.sh
workon my_virtual_env
Run Code Online (Sandbox Code Playgroud)

有没有办法用Ansible实现这个目标?

bash virtualenvwrapper ansible ansible-playbook

3
推荐指数
1
解决办法
3319
查看次数

来自UTC偏移的Pytz时区

我正在使用Facebook的图形API与Python.对于any user_id,它将用户的时区指定为浮点数,表示与UTC的偏移量.

示例:对于印度的某个人,它给出5.5

我将如何转化为有效的此timezone类似Asia/Kolkata

我已经调查过,pytz但没有找到任何合适的方法来做到这一点.

python timezone datetime pytz facebook-graph-api

3
推荐指数
1
解决办法
2002
查看次数

使用ansible从新创建的ebs卷中获取卷ID

我使用ansible的ec2_vol模块来创建一个ebs卷.我看到了源代码,发现它在内部调用了带有用户指定参数的boto的create_volume()方法.我想注册ec2_vol模块的返回值并获取新创建的卷的volume_ids.

截至目前我的剧本看起来像

- name: Attach a volume to previously created instances
  local_action: ec2_vol instance={{item.id}} volume_size=5 aws_access_key={{aa_key}} aws_secret_key={{as_key}} region={{region}}
  with_items: ec2.instances
  register: ec2_volumes
  ignore_errors: yes

- name: Stop the instances
  local_action: command aws ec2 stop-instances --profile=xervmon --instance-id={{item.id}}
  with_items: ec2.instances
  ignore_errors: yes

- name: Detach volume from instances
  local_action: command aws ec2 detach-volume --profile=xervmon --volume-id=????                                                
  ignore_errors: yes
Run Code Online (Sandbox Code Playgroud)

我想知道如何获取新创建的卷的体积ID.我看到run_instances()方法的返回对象有一个属性实例,其中包含一个实例列表.但我找不到任何适当的create_volume()方法返回值的文档.

任何帮助表示赞赏.

谢谢,

cloud amazon-ec2 orchestration amazon-web-services ansible

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

在Python中对嵌套字典进行排序

我有以下字典.

var = a = { 
  'Black': { 'grams': 1906, 'price': 2.05},
  'Blue': { 'grams': 9526, 'price': 22.88},
  'Gold': { 'grams': 194, 'price': 8.24},
  'Magenta': { 'grams': 6035, 'price': 56.69},
  'Maroon': { 'grams': 922, 'price': 18.76},
  'Mint green': { 'grams': 9961, 'price': 63.89},
  'Orchid': { 'grams': 4970, 'price': 10.78},
  'Tan': { 'grams': 6738, 'price': 50.54},
  'Yellow': { 'grams': 6045, 'price': 54.19}
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能根据它进行排序price.因此,生成的字典将如下所示.

result = { 
  'Black': { 'grams': 1906, 'price': 2.05},
  'Gold': { 'grams': 194, 'price': 8.24}, …
Run Code Online (Sandbox Code Playgroud)

python sorting dictionary hashtable

0
推荐指数
1
解决办法
3767
查看次数