Перейти к содержимому

Как сделать автозапуск sh в windows

  • автор:

AHK: Добавить ahk-скрипт в автозагрузку Windows

В смысле, «скрипты для автозагрузки»? Что они должны делать?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3 Ответ от propostaff 2011-09-18 09:49:10

Re: AHK: Добавить ahk-скрипт в автозагрузку Windows

Нужно чтобы при первом запуске скрипт прописался в автозагрузку винды.

4 Ответ от Вадим 2011-09-18 14:15:31 (изменено: Вадим, 2011-09-18 14:15:43)

Re: AHK: Добавить ahk-скрипт в автозагрузку Windows
#notrayicon RegWrite, REG_SZ, HKEY_LOCAL_MACHINE, SOFTWARE\Microsoft\Windows\CurrentVersion\Run, , %A_ScriptName%

5 Ответ от teadrinker 2011-09-18 14:53:31

  • teadrinker
  • Администратор
  • Неактивен

Re: AHK: Добавить ahk-скрипт в автозагрузку Windows

Гугл выдаёт следущее:

Для удаления (добавления) программы из загрузки системы используйте ветки реестра:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run (текущий пользователь)
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce (текущий пользователь, запуск один раз)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run (все пользователи)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce (все пользователи, запуск один раз)
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run (текущий пользователь, только 64-бит версия)
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce (все пользователи, запуск один раз, только 64-бит версия)

Последние две ветки только для Windows 7.
Кроме того, можно добавить ярлык скрипта в папку автозагрузки, путь к которой содержится во встроенной переменной A_Startup (для текущего пользователя) или A_StartupCommon (для всех пользователей).

[X][4.1] Автозапуск скрипта в «безопасном режиме» windows?

Надо удалённый офтопик ребутнуть в безопасный режим без поддержки сети, почистить от ошмётков троянов, и перезагрузить назад. Поскольку машина сильно удалённая (точнее их несколько по городу) и я на неё хожу по rdp (over ssh), то необходимо автоматом запустить скрипт после загрузки в безопасный режим.

Можно ли автоматом запускать скрипты без логина в систему в «безопасном режиме» при её загрузке?

Можно, конечно, в местный крон засунуть, но во-первых оно как-то несколько коряво, во-вторых я не уверен что оно в этом долбаном режиме также отработает.

Как запустить файл .sh или Shell Script в Windows 10

Shell Scripts или .SH файлы похожи на командные файлы Windows, которые могут выполняться в Linux или Unix. В Windows 10 можно запустить файл .sh или Shell Script, используя подсистему Windows для Linux. В этом посте мы покажем вам, как запустить файл сценария оболочки в Windows 10.

Bash — это оболочка и командный язык Unix, который может запускать файлы Shell Script. Вам не нужно устанавливать Ubuntu или любые другие дистрибутивы Linux, если ваши сценарии не нуждаются в поддержке реального ядра Linux. Мы поделимся обоими методами.

  1. Выполнить файл сценария оболочки, используя WSL
  2. Выполнить сценарий оболочки с помощью Ubuntu в Windows 10

1] Выполнить файл сценария оболочки, используя WSL

Установите WSL или Windows Subsystem для Linux

Перейдите в Настройки → Обновление и безопасность → Для разработчиков. Проверьте переключатель режима разработчика. Ищите «Функции Windows», выберите «Включить или отключить функции Windows».

Прокрутите, чтобы найти WSL, установите флажок и установите его. После этого необходимо перезагрузить компьютер, чтобы завершить установку запрошенных изменений. Нажмите Перезагрузить сейчас. BASH будет доступен в командной строке и PowerShell.

Выполнить файлы сценариев оболочки

  • Откройте командную строку и перейдите в папку, где доступен файл сценария.
  • Введите Bash script-filename.sh и нажмите клавишу ввода.
  • Он выполнит скрипт, и в зависимости от файла вы должны увидеть вывод.

На платформе Linux вы обычно используете SH, но здесь вам нужно использовать BASH. Тем не менее, BASH в Windows имеет свои ограничения, поэтому, если вы хотите выполнить в среде Linux, вам нужно установить Ubuntu или что-то подобное.

2] Выполнить сценарий оболочки, используя Ubuntu в Windows 10

Убедитесь, что у вас установлен Ubuntu или любой другой дистрибутив Linux. Ubuntu смонтирует или сделает все ваши каталоги Windows доступными в /mnt. Таким образом, диск C доступен по адресу /mnt/C. Так что если рабочий стол будет доступен по адресу /mnt/c/users//desktop.

Теперь следуйте этим шагам

  1. В командной строке введите Bash, и он запустит приглашение distro.
  2. Перейдите в папку с помощью команды «cd» в папку, где доступны сценарии.
  3. Введите «sh script.sh» и нажмите ввод.
  4. Он выполнит сценарий, и если они зависят от каких-либо основных функций Linux.

Поскольку Linux теперь доступен в Windows, вам не нужно использовать какие-либо сторонние приложения, такие как Cygwin. WSL должно быть достаточно для большинства сценариев, чтобы помочь вам запустить сценарий оболочки в Windows 10.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка / 5. Количество оценок:

Оценок пока нет. Поставьте оценку первым.

Автозапуск скрипта после входа пользователя

Доброго дня!
Подскажите куда положить скрипт, что бы он запускался после входа пользователя в систему?
Сейчас этот скрипт лежит в «etc/network/if-ip.d» и запускается после инициализации сетевого интерфейса.
Скрипт удаляет и копирует файлы из смонтированных сетевых папок, и у пользователя нет доступа к этим файлам.
Подскажите, как решить проблему.

CrashBldash
New member

Сообщения 252
cat ~/.profile
и дальше читайте с самого начала коментарий

blackrook
New member

Сообщения 25

  1. хардкорно-олдвейный: создать ~/.xsessionrc и поместить туда имя скрипта. Только не забудьте в конце команды поставить амперсанд («&»), чтобы она выполнялась фоново — иначе загрузка компонентов рабочего стола и панели зависнет, т.к. будет ждать завершения команды, и может вовсе зависнуть, если скрипт по какой-то причине не отработает успешно;
  2. няшно-современный, т.е. через GUI: «Панель управления» → «Система» ⇒ «Автозапуск».

UPD: Если скрипт должен запускаться при логине у всех пользователей, то сам скрипт, если он работоспособен, можно закинуть в папку /etc/X11/Xsession.d .

Последнее редактирование: 17.10.2019

blackrook
New member

Сообщения 25
у пользователя нет доступа к этим файлам.
Подскажите, как решить проблему.

Перечитал Ваш пост, и, может быть, я чего-то не понимаю: т.е. Вы хотите, чтобы пользователь логинился, а файлы тёрлись от имени другого пользователя (скажем, от root’а)? Или наоборот, Вы хотите этого варианта избежать? От чьего имени должен запускаться Ваш скрипт — от рута или от логинящегося пользователя? И чьи файлы будут удаляться? Может быть, Вам вообще нужно службу писать?

Последнее редактирование: 17.10.2019

Saltoon
New member

Сообщения 95

Перечитал Ваш пост, и, может быть, я чего-то не понимаю: т.е. Вы хотите, чтобы пользователь логинился, а файлы тёрлись от имени другого пользователя (скажем, от root’а)? Или наоборот, Вы хотите этого варианта избежать? От чьего имени должен запускаться Ваш скрипт — от рута или от логинящегося пользователя? И чьи файлы будут удаляться? Может быть, Вам вообще нужно службу писать?

Мне все равно от какого пользователя это будет. Нужно, что бы user имел доступ к этим файлам и мог изменять их.

oko
New member

Сообщения 1 253
to Saltoon

Скрипт удаляет и копирует файлы из смонтированных сетевых папок, и у пользователя нет доступа к этим файлам.

Нужно, что бы user имел доступ к этим файлам и мог изменять их.

На этом модуль экстрасенсорики перегрелся.
Раскройте мысль, а то пока суть проблема не ясна (+1 к тов. blackrook в тему демона-службы).

Saltoon
New member

Сообщения 95
(+1 к тов. blackrook в тему демона-службы).
Это вообще для меня бесполезный набор букв.

Saltoon
New member

Сообщения 95
Раскройте мысль

Есть скрипт. Он удаляет из 3 папок все файлы. Далее копирует из смонтированных сетевых папок файлы взамен тех, что удалил.
Все это делаться под root.
Поэтому user не имеет доступа к этим файлам.

Saltoon
New member

Сообщения 95
В общем проблема решена добавлением в конце скрипта

chmod -R 777 /home/user/нужная папка/
blackrook
New member

Сообщения 25
Далее копирует из смонтированных сетевых папок файлы взамен тех, что удалил.

Я, честно говоря, всё равно задумку понял не до конца, но просто на всякий случай: может быть, Вам стоит посмотреть в сторону программы «rsync»? Она позволяет синхронизировать папки, сохраняя бэкап-копии изменяемых файлов, и много чего другого. Кстати, есть вариант демона/сжубы — она запускается автоматически и фоново синхронизирует содержимое папок.

oko
New member

Сообщения 1 253

to Saltoon
Вместо chmod -R 777 полный_путь_к_каталогу (дать дискреционные права Запись+Чтение+Исполнение всем и вся) лучше уж chown -R имя_пользователя полный_путь_к_каталогу
В противном случае рискуете нарваться на «лихие руки» оконечных пользователей.
Вообще, ваш способ мало чем отличается (в контексте озвученной задачи) от создания systemd-сервиса (Гугл в помощь по части systemd). Как бы раньше, до systemd, большинство способов и сводилось к тому, чтобы sh-скрипт подкинуть какому-нибудь существующему сервису, стартующему при загрузке системы (например, /etc/rc.local). Сейчас это несколько «окультурилось», хотя для мелких задач, imho, писать полноценные systemd-сервисы куда муторнее, чем подсунуть в нужное место sh-скрипт.
И да, rsync больше для инкрементального копирования или синхронизации расхождений, чем для задачи «полной перезаписи».
И вообще, золотое правило: если нет времени/возможности изучить нечто неизведанное ранее, лучше использовать те инструменты, которые знаешь и понимаешь. Во всяком случае, в «боевой обстановке», ага.

Saltoon
New member

Сообщения 95
«лихие руки» оконечных пользователей.

Не думаю, что такое возможно. Пользователи впервые увидят это систему (пока идет стадия настроек, обкатка) и вряд ли смогут что либо повредить. Файлы нужны для DOS приложения и кроме него, приложения, к этим папкам никто не ходит. Приложение запускается под user.
Даже в случае повреждения этих файлов, запускается скрипт, и с сервера копируются новые файлы. Обновление происходит ежедневно в конце рабочего дня.

oko
New member

Сообщения 1 253

to Saltoon
Даже самый долгий дорог начинается с первый шаг (с)
Так что я бы не брезговал юзать chown вместо chmod в вашем случае. Тем более, что трудозатраты по настройке не сильно различаются, ага.

Saltoon
New member

Сообщения 95

Я, честно говоря, всё равно задумку понял не до конца, но просто на всякий случай: может быть, Вам стоит посмотреть в сторону программы «rsync»? Она позволяет синхронизировать папки, сохраняя бэкап-копии изменяемых файлов, и много чего другого. Кстати, есть вариант демона/сжубы — она запускается автоматически и фоново синхронизирует содержимое папок.

Проблема решена, но я попробую объяснить как организован процесс.
Есть программа с базой данных. Программа старая, написана пот DOS еще в мохнатом году. На сегодняшний день внедряется новая и по плану этот процесс растянут на 3 года, но не в этом дело. Еще 3 года нужно будет поддерживать работоспособность старой программы, а возможно и больше.
Теперь собственно к процессу работы с программой и БД к ней.
В течении дня вносятся изменения в базу данных, которые сохраняются в буфере. В конце дня с машины администратора вносятся изменения в БД на сервере. В начале следующего дня при включении компов заменяются файлы БД на локальных дисках. (Удаляются старые и копируются новые с сервера). Для этого на компах в автозагрузке есть батник (батник в Windows под Астру переделал его в «bash»), который все это делает. Все это придумано не мной, я лишь поддерживаю эту систему в работоспособном состоянии.)) Задача была внедрить новые компы под Астрой в эту систему. Компы поставляются централизованно, не моя прихоть. Программа «rsync» как я понял синхронизирует нужные папки в реальном времени. В этом нет необходимости. У пользователя обновленная (вчерашняя) база. А все изменения за сегодня, он увидит на следующий день, т.к. обновление БД производится вручную в конце рабочего дня. В автоматическом режиме обновлять БД нет технической возможности, так построена работа с этой программой. Как то так. Надеюсь все понятно изложил.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *