winscp连接windows虚拟机,显示被拒绝;爬虫定时任务执行问题。
原因:win10的操作系统, 是客户端类的操作系统,不是服务端的操作系统。默认不安装openssh的服务器,只能自己去安装。
用户名密码正确的情况下,提示:网络错误,连接被拒绝
1. 可以ping 通
2. 关闭了防火墙,(其实不用关防火墙,只要允许通过的应用中勾选了OpenSSH就可以访问了)。
3. 检查是否开启 ssh服务 https://blog.csdn.net/weixin_72910567/article/details/132414264
检查方法:
输入命令在PowerShell(管理员)模式下操作
左下搜索框中输入
输入命令 Get-WindowsCapability -Online | ? Name -like 'OpenSSH*' 来查看OpenSSH服务器与客户端是否安装完成,安装完成如图下所示
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
开始---设置——搜索“添加可选功能“ ——添加功能——OpenSSH服务端,
只安装了OpenSSH客户端,没有安装OpenSSH服务器,马上安装。
安装成功后,winscp可以连接成功了。
注:SSH协议的默认端口是22,一般不会去更改这个端口号。
可以更改SSH协议的默认端口号。在服务器端,可以通过编辑SSH配置文件(通常为/etc/ssh/sshd_config)来修改端口号。修改后需要重启SSH服务以使更改生效。
但是,不建议随意更改SSH的默认端口号,因为这样做可能会使安全性降低。更改端口号可能会使潜在的攻击者更容易发现服务器上的SSH服务,并增加攻击面。此外,如果将端口号更改为非标准的端口号,客户端连接时需要指定正确的端口号。
如果出于安全考虑需要更改SSH的默认端口号,建议选择一个不常用的端口号,并确保服务器上的防火墙规则允许通过该端口的通信。同时,应该确保只有授权的用户可以访问SSH服务,并采取其他安全措施来保护服务器的安全。
------------------------------------------------------------------------------------------windows定时任务一直不能稳定运行???????????--------------------------------------------------
windows定时任务一直不能稳定运行???????????
除了,win+R可以打开运行窗口,另外:开始——》windows系统——》运行
运行: taskschd.msc——》任务计划程序
1. 将bat文件中写入日志,生成日志文件,如:echo "开始爬取" >> log.txt #没有生成日志文件,其实是生成了,由于定时任务设置没有写起始于参数,所以默认生成在c:\system32下了。
2. 将操作的bat文件路径全部改成英文,不要中文路径出现。,bat中加chcp 65001,中文就不乱码了,其实中文路径也没有问题。
3. 先在本地创建最小单位的 bat,一步一步排除。
4. 最小bat仅写日志文件,但日志文件中出现乱码。
解决方法:思路,bat命令用指写编码的方式写入日志文件。
@echo off
powershell -Command "Add-Content -Encoding UTF8 -Value '---------------------任务执行完毕-------------------%time%' -Path 'log.txt'"
bat文件的注释: ::
@echo与echo的区别:
1) 带@,不输出命令本身
2)不带@,控制台会输出命令本身。
5. 自动运行bat可以执行,并定入日志文件,用%time%来记录当前时间。
6. 创建定进任务,查看是否执行,到点后历史记录中有日志执行
7 查看日志的别的方法:
win+ R 在“运行”对话框中,键入“eventvwr.msc”,然后按“Enter”键。bat
8. 手动运行bat文件,可以正确生成日志文件。但放入计划任务中,就不能生成日志文件了,尽管他的历史记录中有事件数7个,但没有日志文件运行,仍说明没正确启动。
解决参考:https://blog.csdn.net/Xintaiwuyanzu/article/details/131552654(-----这个做不做好像都行吧。???服务器上没有弄就好了。)
先在本地计算机上配置好后试一下。按以上配置后,结果还是不行。
本地查看历史记录显示(已禁用),点击右侧“启用所有任务历史记录”
事件查看日志:enentvwr.msc
本地安全策略:secpol.msc
任务计划:taskschd.msc
策略编辑器:gpedit.msc
9. 在计划任务里,右键点击手动运地,仍然没有执行,虽然显示是执行了。,终于被我找到原因了,bat文件是写日志的,自动生成log.txt文件,这个计划任务在操作这里要设定起始于参数F:\spider\设置上就好了。
其实,它是执行了,生成的日志文件没有指定起始于(可选)目录时,它默认 C:\Windows\System32,log.txt文件是生成在C:\Windows\System32p 这个目录下了,我找见了。
参考:https://blog.csdn.net/lihongzhai/article/details/128192199
10 。终于定时任务执行了,也写了日志文件了,但却没有powershell,也没有打开浏览器。和手动直接双击bat的效果不一样。为什么???
选择只在用户登录时行就会弹出命令行窗口了,不管用户时否登录都要运行是不会弹出命行窗口的。
11. 终于可能定时启动并打开窗口和浏览器了,还有两个功能需要实现:1.) 窗口弄完可以不关闭,保持下午18点再自动闭,这样就可以一整天验证前一天是否正确了 2)现在日志文件中的结束时间不是真正的结束时间,应返回bat文件中一个真正原爬取结束的时间。写进日志文件中, 这样才是真正的日志文件。
12 所有的计划任务都选择:“只在用户登录时运行” 当凌晨1点时,用户已退出登陆,这时用bat命令让用户再登陆一下。这样才更保险。
方法:1)取消锁屏
2)用户选择自动登陆
3)计算机不进入睡眠或休眠模式
就算这样可以,但是不安全了。
https://blog.csdn.net/lihongzhai/article/details/128192199
昨晚走时没有弄取消锁屏,心想估计凌晨3点时,一个定时任务也不会运行,因为锁屏后,用户就自动退出了,今天早上来了以后,5个定时任务。4个运行成功,只有一个报错了。为什么??
原因:已启用 电池的 唤醒定时器
win -- 搜索 编辑电源计划 -- 更改 高级电源设置 --
睡眠 -- 允许使用唤醒定时器
1. 先解决这个没有运行的?报错:操作员或系统管理员拒绝了请求
2. 查看当前的锁屏状态,看是不是取消了锁屏?
解释下三个参数:
【程序或脚本】文本框中填的是Python编译器的名称,一般就是python.exe,【起始于】文本框中填的是Python编译器的目录,上图中假设你的Python编译器的完整路径是“C:\Python27\python.exe”,【添加参数】文本框中填的是你的Python程序的完整路径,这里假设在C盘的Users文件夹下面有一个叫做code.py的文件。如果你的Python程序包含命令行参数,将其添加到Python程序的完整路径之后即可。
我自己的设置:
其他默认设置即可。
遇到以下问题:
1.操作员或者系统管理员拒绝了请求;
解决:
解决办法:打开“控制面板->管理工具->本地安全策略”,选择“安全设置->本地策略->安全选项”,在右边列表中找到“域控制器:允许服务器操作者计划任务”,将状态改为“已启用”。
2.报错”所指定的账户名称无效“;
如果仅勾选“只在用户登录时运行”,点击“确定”后直接创建成功。并不会遇到如题报错。
如果勾选“不管用户是否登录都要运行”,点击“确定”后弹出账户信息输入界面。这种情况才会遇到这个错误。
3.程序执行一半,自动停止。
解决方法:在任务的“常规”设置中,选“使用最高权限运行”;
解答:在计划任务属性页面,点击“更改用户或组”,输入用户名(比如我的“wahaha”),然后点击“检查名称”,再点击“确定”提交,就可以了。
参考文档:
https://blog.csdn.net/wwy11/article/details/51100432
https://blog.csdn.net/andyguan01_2/article/details/86488311
2. 查看当前的锁屏状态,看是不是取消了锁屏?担心锁屏影响的话,执行以下操作。
启用:允许唤醒定时器。
最后整理一下:
1.) 操作:启动程序,那三个参数比较重要,程序或脚本:python.exe 添加参数:要执行python文的绝对路径包括文件名 起始于:python.exe所在的路径。
下午又试验了一次,13个ps1脚本,只运行了10个,三个未运行?为什么 1. 电信预审 2. 电信结果 3 焦煤 三个没有运行
是否能稳定运行,需要时间来验证,接下来的优化思路:
1.) 窗口弄完可以不关闭,保持下午18点再自动关闭,这样就可以一整天验证前一天是否正确了
2)现在日志文件中的结束时间不是真正的结束时间,应返回bat文件中一个真正原爬取结束的时间。写进日志文件中, 这样才是真正的日志文件。
跟踪多日:定时任处是好的,问题出现在插入库时,content内容过长,而表里字段又太小插不进去,导致爬取下来但却展示不出来的问题。这个已将字段改成longtext。已解决。
20240104 目前遇到的问题是
1. 每天只爬10条,这个限制不合理,需要放大至30条。
2. 凌晨3点爬取,排除了网络的问题,还是爬不到数据,6个字段,仅爬取到address这一个字段。 标题和发布日期没有爬到。需要建立出错重爬机制。
3. 单独一个来源的爬取和清洗不能拆出来执行。
1月5日本有2条,仅爬下来1条,1月6日的数据中只有三个类别,没有跑完都,所以应该要把前一天的子进程,进程完全退出,释放资源状态恢复成准备就绪再开启新的一轮。
20210108==============================================每天18:00准时关闭子进往和浏览器,以方便下一轮爬取========================================
第一种方案:
#Stop-Process -Name "cmd" -Force #先不关闭cmd,因为bat命令本身就是cmd关了无法运行了。 Stop-Process -Name "powershell" -Force
存到一个close_all.ps1文件中,在bat中执行此ps1文件。
:: 启动第一个 PowerShell 脚本,先关闭所有浏览器窗口及powershell\cmd窗口。 start powershell.exe -ExecutionPolicy Bypass -File "close_all.ps1" :: 等待几分钟 ping 127.0.0.1 -n 1000>nul :: 清除上次爬取的内容,开始新一轮爬取。 :: python clear_file.py
运行报错如下:
Stop-Process : 由于以下错误而无法停止进程“powershell (21780)”: 拒绝访问。
第二种方案:
tasklist | findstr "powershell" #找出powershell的PID,然后关闭 taskkill /F /PID 10580
关闭了所有的浏览器,现强行taskkill,还是不行。拒绝访问。
还是在本地装个easyspider在本地搞一下吧。先把本地爬虫环境装好。跟线上一致了。
========同一条公告,title相同,发布日期相同,但分类却不同时,校验分类后再去重,否则只取第一条,这样太武断了。=======================
python安装pandas出错,用命令 :python -m pip install pandas 成功安装。 python -m pip install mysql.connector
----------------每次爬完后,powershell.exe不能自动关闭需要每天上午来了手动关闭,好麻烦-------------
发现一个非常好的工具:能定位当前窗口所属的进程。
windows工具procexp.exe
十分好用的进程管理工具,可定位弹框插件所属应急,恶意插件卸载。
桌面弹出一些不知名弹框,找不到所属应用可以用process定位弹框所属应用,进行卸载。
最后bat中自动关闭===============================================
::启动爬虫任务
start powershell.exe -ExecutionPolicy Bypass -File "*****zhaobiao.ps1"
::等待1分钟
timeout /t 60
@echo off
setlocal enabledelayedexpansion
:: 检查powershell.exe进程是否存在
tasklist /FI "IMAGENAME eq powershell.exe" | findstr /C:"powershell.exe" > nul
if %errorlevel%==0 (
echo powershell.exe 进程正在运行,正在尝试终止...
taskkill /f /im powershell.exe
if %errorlevel%==0 (
echo powershell.exe 进程已成功终止。
) else (
echo 终止powershell.exe 进程失败。
)
) else (
echo powershell.exe 进程未找到。
)
:: 检查powershell.exe进程是否存在
tasklist /FI "IMAGENAME eq conhost.exe" | findstr /C:"conhost.exe" > nul
if %errorlevel%==0 (
echo powershell.exe 进程正在运行,正在尝试终止...
taskkill /f /im conhost.exe
if %errorlevel%==0 (
echo conhost.exe 进程已成功终止。
) else (
echo 终止 conhost.exe 进程失败。
)
) else (
echo conhost.exe 进程未找到。
)
pause
timeout /t 100000
endlocal