Запишите текстовые сообщения между Unix и Windows

Избегать любых сообщений завершения задания (на командной строке, а также в ps вывод), можно поместить команду, чтобы быть фоном в a sh -c 'cmd &' создать.

{
ps
echo
pid="$(sh -c 'sleep 60 1>&-  & echo ${!}')"
#pid="$(sh -c 'sleep 60 1>/dev/null  & echo ${!}')"
#pid="$(sh -c 'sleep 60 & echo ${!}' | head -1)"
ps
kill $pid
echo
ps
}

Между прочим, возможно вложить непосредственные уведомления о завершении задания bash при помощи опций оболочки set -b или set -o notify соответственно.

В этом случае"bash получает a SIGCHLD сигнал и его обработчик сигналов сразу отображают уведомление - даже если bash в настоящее время посреди ожидания приоритетного процесса для завершения" (см. следующую ссылку ниже).

Получить третий режим промежутка уведомления об управлении заданиями set +b (режим по умолчанию) и set -b (так, чтобы Вы получили непосредственные уведомления о завершении задания, не повреждая то, чему Вы уже ввели на своей текущей командной строке - подобный ctrl-x ctrl-v) требует патча к bash Simon Tatham (для самого патча и дополнительной информации см.: Разумное асинхронное уведомление о задании в ударе (1)).

Поэтому просто давайте повторимся Matteo Italia gdb- fu для a bash оболочка, которая была установлена сразу уведомить относительно завершения задания с set -b.

# 2 Terminal.app windows

# terminal window 1
# start Bash compiled with -g flag
~/Downloads/bash-4.2/bash -il
set -bm
echo $$ > bash.pid

# terminal window 2
gdb -n -q
(gdb) set print pretty on
(gdb) set history save on
(gdb) set history filename ~/.gdb_history
(gdb) set step-mode off
(gdb) set verbose on
(gdb) set height 0
(gdb) set width 0
(gdb) set pagination off
(gdb) set follow-fork-mode child
(gdb) thread apply all bt full
(gdb) shell cat bash.pid
(gdb) attach 
(gdb) break pretty_print_job

# terminal window 1
# cut & paste
# (input will be invisible on the command line)
sleep 600 &   

# terminal window 2
(gdb) continue
(gdb) ctrl-c

# terminal window 1
# cut & paste
kill $!

# terminal window 2
(gdb) continue
(gdb) bt

Reading in symbols for input.c...done.
Reading in symbols for readline.c...done.
Reading in symbols for y.tab.c...done.
Reading in symbols for eval.c...done.
Reading in symbols for shell.c...done.
#0  pretty_print_job (job_index=0, format=0, stream=0x7fff70bb9250) at jobs.c:1630
#1  0x0000000100032ae3 in notify_of_job_status () at jobs.c:3561
#2  0x0000000100031e21 in waitchld (wpid=-1, block=0) at jobs.c:3202
#3  0x0000000100031a1a in sigchld_handler (sig=20) at jobs.c:3049
#4  
#5  0x00007fff85a9f464 in read ()
#6  0x00000001000b39a9 in rl_getc (stream=0x7fff70bb9120) at input.c:471
#7  0x00000001000b3940 in rl_read_key () at input.c:448
#8  0x0000000100097c88 in readline_internal_char () at readline.c:517
#9  0x0000000100097dba in readline_internal_charloop () at readline.c:579
#10 0x0000000100097de6 in readline_internal () at readline.c:593
#11 0x0000000100097842 in readline (prompt=0x100205f80 "noname:~ $ ") at readline.c:342
#12 0x0000000100007ab7 in yy_readline_get () at parse.y:1443
#13 0x0000000100007bbe in yy_readline_get () at parse.y:1474
#14 0x00000001000079d1 in yy_getc () at parse.y:1376
#15 0x000000010000888d in shell_getc (remove_quoted_newline=1) at parse.y:2231
#16 0x0000000100009a22 in read_token (command=0) at parse.y:2908
#17 0x00000001000090c1 in yylex () at parse.y:2517
#18 0x000000010000466a in yyparse () at y.tab.c:2014
#19 0x00000001000042fb in parse_command () at eval.c:228
#20 0x00000001000043ef in read_command () at eval.c:272
#21 0x0000000100004088 in reader_loop () at eval.c:137
#22 0x0000000100001e4d in main (argc=2, argv=0x7fff5fbff528, env=0x7fff5fbff540) at shell.c:749

(gdb) detach
(gdb) quit

10
14.07.2014, 21:09
4 ответа
[

] На Unix: []nc -l 192.168.1.10 32849[][

] [

]On Windows: []telnet 192.168.1.10 32849[][

] [

]Где 32849 - произвольный порт, разрешенный правилами брандмауэра, а IP - IP-адрес прослушивающей машины Unix. []nc[] - это утилита netcat.[

].
5
27.01.2020, 20:02

Есть интересный инструмент, который позволяет выполнять команды windows из Linux, его название winexe.

Таким образом, вы можете отправить сообщение с того же самого компьютера на консоль, просто набрав его: winexe -U domain/user%password --interactive=1 //WindowsMachine "msg console \"Ваше сообщение идет здесь.\"

Как вы видите ответ noleti гораздо проще, но с помощью winexe вы также можете открыть вычисление или что угодно на этой машине. Мы использовали его для выполнения автоматической установки на машины с Windows из пакетного сценария в Linux. Довольно круто и экономия времени...

0
27.01.2020, 20:02

Как насчет NET SEND {name1 | * | /DOMAIN[:name] | /USERS} сообщения на машине windows, и echo "message" | smbclient -M name2 на linux box? name1 и name2 - это сетевые имена машин.

1
27.01.2020, 20:02

Идея из ответа projectdp: netcat на linux служит telnet на выигрыш. Нужно, чтобы -p и разные IP-адреса на двух машинах, однако:

  • В Linux: netcat -l 10.0.0.2 -p 14415 - если ваши windows находятся на 10.0.0.2

  • в Windows: telnet 10.0.0.1 14415 - если ваш linux находится на 10.0.0.1

  • , чтобы выйти из telnet нажмите ^], что означает Ctrl+], а затем введите q.

  • Для выбора произвольного порта, как 14415, удобная таблица находится по адресу Давида Вереба.

Однако на win7 x64 мне пришлось сначала включить telnet, короче говоря:

  • c:\windows\sysnative\dism.exe /online /norestart /logpath: "c:\foo. txt" /enable-feature /ignorecheck /featurename: "TelnetClient"

  • Проблема в первоначальной попытке заключалась в том, что pkgmgr пытался использовать 32-битный dism и скулил для 64-битного. Идея sysnative пришла мне от Османа Шенера.

  • Устанавливается на c:\windows\sysnative\telnet.exe. Я ставлю c:\windows\sysnative в переменную окружения PATH с помощью sysdm.cpl.

  • Если у вас есть DeVuan или Ubuntu для Linux, sudo apt-get установить netcat-традиционный

Чат выглядел так:

devuan-netcat win7-telnet

3
27.01.2020, 20:02

Теги

Похожие вопросы