# How can i specify different username for different host in command line

**URL:** <https://forum.ansible.com/t/how-can-i-specify-different-username-for-different-host-in-command-line/37148>\
**Category:** Ansible Project\
**Created:** [September 28, 2022, 6:36am UTC](https://forum.ansible.com/t/how-can-i-specify-different-username-for-different-host-in-command-line/37148 "2022-09-28T06:36:28Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Cola\_CoCo](https://avatars.discourse-cdn.com/v4/letter/c/7bcc69/32.png) [@Cola\_CoCo](https://forum.ansible.com/u/Cola_CoCo)\
**Post date:** [September 28, 2022, 6:36am UTC](https://forum.ansible.com/t/how-can-i-specify-different-username-for-different-host-in-command-line/37148/1 "2022-09-28T06:36:28Z")

</div>

I executed a command like: `ansible all -i "user1@ip1:22,user2@ip2:port2" -m shell -a "echo 1" --private-key /root/.ssh/id_rsa`.  
But it could not work.  
I want to know whether there is a way to let me specify different user for different host in command line(not using a inventory file).

---

<div class="post-metadata">

**Author:** ![Luca\_remix\_tj\_Lorenz](https://avatars.discourse-cdn.com/v4/letter/l/ea666f/32.png) [@Luca\_remix\_tj\_Lorenz](https://forum.ansible.com/u/Luca_remix_tj_Lorenz)\
**Post date:** [September 28, 2022, 6:53am UTC](https://forum.ansible.com/t/how-can-i-specify-different-username-for-different-host-in-command-line/37148/2 "2022-09-28T06:53:11Z")

</div>

Hello,

man ansible

=\> --user=user1

Luca

---

<div class="post-metadata">

**Author:** ![Cola\_CoCo](https://avatars.discourse-cdn.com/v4/letter/c/7bcc69/32.png) [@Cola\_CoCo](https://forum.ansible.com/u/Cola_CoCo)\
**Post date:** [September 28, 2022, 7:14am UTC](https://forum.ansible.com/t/how-can-i-specify-different-username-for-different-host-in-command-line/37148/3 "2022-09-28T07:14:01Z")

</div>

Hello,  
-user can just specify one user, but what I need is to specify multi users in one command line, like “user1@ip1, user2@ip2”

在2022年9月28日星期三 UTC+8 14:53:39[lorenze...@gmail.com](mailto:lorenze...@gmail.com) 写道：

---

<div class="post-metadata">

**Author:** ![Luca\_remix\_tj\_Lorenz](https://avatars.discourse-cdn.com/v4/letter/l/ea666f/32.png) [@Luca\_remix\_tj\_Lorenz](https://forum.ansible.com/u/Luca_remix_tj_Lorenz)\
**Post date:** [September 28, 2022, 7:17am UTC](https://forum.ansible.com/t/how-can-i-specify-different-username-for-different-host-in-command-line/37148/4 "2022-09-28T07:17:10Z")

</div>

Hello,

---

<div class="post-metadata">

**Author:** ![Walter\_Rowe](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/walter_rowe/32/4506_2.png) [@Walter\_Rowe](https://forum.ansible.com/u/Walter_Rowe)\
**Post date:** [September 28, 2022, 11:12am UTC](https://forum.ansible.com/t/how-can-i-specify-different-username-for-different-host-in-command-line/37148/5 "2022-09-28T11:12:34Z")

</div>

I agree. This has to be done in the inventory. No way to do this on the command line. Inventories can be powerful and help you not have to specify so many things on the command line. You can have group vars and host vars in an inventory.

Walter

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/ansible/original/1X/1882d9a01da5d8996a862359b0913cc568a39b84.svg) [@system](https://forum.ansible.com/u/system)\
**Post date:** [September 28, 2022, 1:32pm UTC](https://forum.ansible.com/t/how-can-i-specify-different-username-for-different-host-in-command-line/37148/6 "2022-09-28T13:32:57Z")

</div>

the 'command line inventory' is still an inventory, by default handled  
by the `host_list` plugin, you can also use the 'advanced\_host\_list`  
plugin or develop your own that can handle any notation you throw at  
it.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/ansible/original/1X/1882d9a01da5d8996a862359b0913cc568a39b84.svg) [@system](https://forum.ansible.com/u/system)\
**Post date:** [September 28, 2022, 1:34pm UTC](https://forum.ansible.com/t/how-can-i-specify-different-username-for-different-host-in-command-line/37148/7 "2022-09-28T13:34:48Z")

</div>

docs for each:  
[https://docs.ansible.com/ansible/latest/collections/ansible/builtin/host\_list\_inventory.html](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/host_list_inventory.html)  
[https://docs.ansible.com/ansible/latest/collections/ansible/builtin/advanced\_host\_list\_inventory.html#ansible-collections-ansible-builtin-advanced-host-list-inventory](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/advanced_host_list_inventory.html#ansible-collections-ansible-builtin-advanced-host-list-inventory)

the code for both and more:  
[https://github.com/ansible/ansible/tree/devel/lib/ansible/plugins/inventory](https://github.com/ansible/ansible/tree/devel/lib/ansible/plugins/inventory)

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/ansible/original/1X/1882d9a01da5d8996a862359b0913cc568a39b84.svg) [@system](https://forum.ansible.com/u/system)\
**Post date:** [September 28, 2022, 1:45pm UTC](https://forum.ansible.com/t/how-can-i-specify-different-username-for-different-host-in-command-line/37148/8 "2022-09-28T13:45:17Z")

</div>

tested several combinations:

bcoca@erebos:~/work/ansible(editor\_config)$ ansible-inventory -i  
'ip:23, ip2:24' --list  
{  
&nbsp;&nbsp;&nbsp;"\_meta": {  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"hostvars": {  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"ip": {  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"ansible\_port": 23  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"ip2": {  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"ansible\_port": 24  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}  
&nbsp;&nbsp;&nbsp;},  
&nbsp;&nbsp;&nbsp;"all": {  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"children": [  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"ungrouped"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]  
&nbsp;&nbsp;&nbsp;},  
&nbsp;&nbsp;&nbsp;"ungrouped": {  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"hosts": [  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"ip",  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"ip2"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]  
&nbsp;&nbsp;&nbsp;}  
}  
bcoca@erebos:~/work/ansible(editor\_config)$ ansible-inventory -i  
'user@ip:23, user@ip2:24' --list  
{  
&nbsp;&nbsp;&nbsp;"\_meta": {  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"hostvars": {}  
&nbsp;&nbsp;&nbsp;},  
&nbsp;&nbsp;&nbsp;"all": {  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"children": [  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"ungrouped"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]  
&nbsp;&nbsp;&nbsp;},  
&nbsp;&nbsp;&nbsp;"ungrouped": {  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"hosts": [  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"user@ip2:24",  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"user@ip:23"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]  
&nbsp;&nbsp;&nbsp;}  
}

bcoca@erebos:~/work/ansible(editor\_config)$ ansible-inventory -i  
'user@ip1, user2@ip2' --list  
{  
&nbsp;&nbsp;&nbsp;"\_meta": {  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"hostvars": {}  
&nbsp;&nbsp;&nbsp;},  
&nbsp;&nbsp;&nbsp;"all": {  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"children": [  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"ungrouped"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]  
&nbsp;&nbsp;&nbsp;},  
&nbsp;&nbsp;&nbsp;"ungrouped": {  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"hosts": [  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"user2@ip2",  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"user@ip1"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]  
&nbsp;&nbsp;&nbsp;}  
}

the issue is that user@ip breaks the 'address parsing' that would  
separate ip:port, while user@ip is 'valid' as a hostname and when  
passed to ssh 'just works'tm  
So you would just need to modify the plugin to extract user@host  
(puting the 'user' value into ansible\_user) before calling the  
parse\_address function.
